Welcome 微信登录
编程资源 图片资源库

首页 / 软件开发 / C# / 实战MEF(4)搜索范围

实战MEF(4)搜索范围2014-03-20 cnblogs 东邪独孤在前面的文章中,几乎每个示例我们都会接触到扩展类的搜索位置,我们也不妨想一下,既然是自动 扩展,它肯定会有一个或者多人可供查找的位置,不然MEF框架怎么知道哪里有扩展组件呢?

就像我 们用导航系统去查找某个地方的所有旅店一样,正因为在该地的旅店已在数据库中注册了相关信息,我 们的导航系统才能查找到它,如果某家旅店没有向导航数据库提供任何数据,那很显然导航系统是无法 识别到它的详细地址的。

MEF对扩展组件的查找范围通常有三个:

AssemblyCatalog:从某个程序集中查找。

ApplicationCatalog:在应用程序所在的目录下查找。

DirectoryCatalog:在某个目录下查找,如D:\Libs。

如果你还嫌不够的话,可以用AggregateCatalog来设置多个查找范围。

下面我们来逐个尝试 一下。

AssemblyCatalog

基于某个程序集的范围查找,最常干的是在当前程序集内查找,当然也可以在其他程序集中查找。只 要能得到一个Assembly对象就可以在其中查找,大家都那么聪明,我相信大家能理解的。

下面是 一个典型的做法,例子是在当前程序集中查找扩展部件的。

首先,我们定义一个用于规范扩展部 件行为的接口。

然后,写两个类来实现上 面的接口,并将它们导出。