My Blog

Managed Extensibility Framework (MEF) example

by lupok on venerdì 11 gennaio 2013 17:08
using System;
using System.Collections.Generic;
using System.ComponentModel.Composition;
using System.Linq;
using System.Text;
 
namespace MefExample
{
 
   [Export(typeof(ICalculator))]
   class MySimpleCalculator : ICalculator
   {
 
#pragma warning disable 0649
      [ImportMany]
      IEnumerable<Lazy<IOperationIOperationData>> operations;
#pragma warning restore 0649
 
      public String Calculate(String input)
      {
         int left;
         int right;
         Char operation;
         int fn = FindFirstNonDigit(input); //finds the operator
         if (fn < 0) return "Could not parse command.";
 
         try
         {
            //separate out the operands
            left = int.Parse(input.Substring(0, fn));
            right = int.Parse(input.Substring(fn + 1));
         }
         catch
         {
            return "Could not parse command.";
         }
 
         operation = input[fn];
 
         foreach (Lazy<IOperationIOperationData> i in operations)
         {
            if (i.Metadata.Symbol.Equals(operation)) return i.Value.Operate(left, right).ToString();
         }
         return "Operation Not Found!";
      }
 
      private int FindFirstNonDigit(String s)
      {
         for (int i = 0; i < s.Length; i++)
         {
            if (!(Char.IsDigit(s[i]))) return i;
         }
         return -1;
      }
 
 
   }
 
}
 
MefExample.zip

Blogs Parent Separator My Blog
Author
lupok

My Blog

Tags