Catalog的种类

框架中的Catalog

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

继承层次结构

  • 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类,并且覆写掉基类的方法即可。

image

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

 

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

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值