标签:
其实个人觉得MEF和WCF有点类似吧,都是要通过一个接口实现的形式来达到传递信息并且使用的目的
以下是个人从网络上一些高手学习来使用的一些经验吧,或者是学习的心得吧
高手做了一章图
其实就是把部件从catlog中为了实现导出来,先从容器里面读取出来,然后导入到Compsoe里面进行组装最后实现实例化
使用先添加对MEF库的引用,即“System.ComponentModel.Composition”。
//这便是我们的契约 Contract,其实说白了就是接口 public interface ICalculator { int Add(int a, int b); int Sub(int a, int b); }
//此处我们导出了契约,这就是一个部件 [Export(typeof(ICalculator))] public class MyCalculator : ICalculator { public int Add(int a, int b) { Console.WriteLine("Add Invoked"); return a + b; } public int Sub(int a, int b) { Console.WriteLine("Sub Invoked"); return a - b; } }
class Program { private static CompositionContainer _container; static void Main(string[] args) { //AssemblyCatalog 目录的一种,表示在相应的程序集中搜索 var catalog = new AssemblyCatalog(typeof(Program).Assembly); _container = new CompositionContainer(catalog); MathCompute mathCompute = new MathCompute(); _container.ComposeParts(mathCompute);//组装部件 Console.WriteLine(mathCompute.Add(1, 3)); Console.WriteLine(mathCompute.Sub(3, 2)); Console.ReadLine(); } } public class MathCompute { //我们需要导入这个契约实现的部件 [Import(typeof(ICalculator))] private ICalculator _calculator; public int Add(int a, int b) { return _calculator.Add(a, b); } public int Sub(int a, int b) { return _calculator.Sub(a, b); } }
这里我感觉他写的这个例子没有任何意义,重在使用吧,我们初学者总归要来学习学习,查阅了相关资料补充下
标签:
原文地址:http://www.cnblogs.com/wangchuang/p/4494970.html