在MEF框架中,包含了4种Catalog,所有的Catalog的是从System.ComponentModel.Composition.Primitives名称空间下的ComposablePartCatalog抽象类派生下来。

Catalog的种类

  • AssemblyCatalog:表示从程序集中搜索部件的目录。
  • DirectoryCatalog:表示从文件系统的指定路径中,搜索程序集,从而搜索部件。
  • TypeCatalog:表示从指定的类型集合中,去搜索相应的部件。
  • AggregateCatalog:聚合目录,可以添加上面所说的所有目录,从而进行多方面的部件搜索。

那么再看下第一天的例子

    var catalog = new AssemblyCatalog(typeof(Program).Assembly);   //从程序集中搜索部件,应该指的就是目录下的DLL吧
        _container = new CompositionContainer(catalog);

三、自定义Catalog

虽然MEF提供了4种Catalog已经能满足我们很多需求,但也并非所有时候都尽如人意。如果无法满足,我们可以通过自定义Catalog来完成我们所需要的部件搜索。

自定义Catalog和系统实现的Catalog类似,我们通过继承System.ComponentModel.Composition.Primitives空间下的ComposablePartCatalog类,并且覆写掉基类的方法即可。

Catalog的种类

上图是ComposablePartCatalog类中提供的方法,我们要实现自己的Catalog,必须要覆写掉Parts属性,如有特别需要处理的,我们还可以覆写GetExports方法,此方法默认的调用了Parts属性,进行进一步的输出。

 

http://www.cnblogs.com/prinsun/tag/MEF/

 

 

相关文章:

  • 2022-12-23
  • 2021-08-15
  • 2021-06-19
  • 2022-12-23
  • 2021-08-20
  • 2021-07-12
  • 2021-07-06
  • 2022-12-23
猜你喜欢
  • 2022-01-22
  • 2021-11-03
  • 2021-04-23
  • 2021-12-06
  • 2021-07-29
  • 2021-09-21
  • 2021-12-25
相关资源
相似解决方案