在前面的文章中,几乎每个示例我们都会接触到扩展类的搜索位置,我们也不妨想一下,既然是自动 扩展,它肯定会有一个或者多人可供查找的位置,不然MEF框架怎么知道哪里有扩展组件呢?
就像我 们用导航系统去查找某个地方的所有旅店一样,正因为在该地的旅店已在数据库中注册了相关信息,我 们的导航系统才能查找到它,如果某家旅店没有向导航数据库提供任何数据,那很显然导航系统是无法 识别到它的详细地址的。
MEF对扩展组件的查找范围通常有三个:
AssemblyCatalog:从某个程序集中查找。
ApplicationCatalog:在应用程序所在的目录下查找。
DirectoryCatalog:在某个目录下查找,如D:\\Libs。
如果你还嫌不够的话,可以用AggregateCatalog来设置多个查找范围。
下面我们来逐个尝试 一下。
AssemblyCatalog
基于某个程序集的范围查找,最常干的是在当前程序集内查找,当然也可以在其他程序集中查找。只 要能得到一个Assembly对象就可以在其中查找,大家都那么聪明,我相信大家能理解的。
下面是 一个典型的做法,例子是在当前程序集中查找扩展部件的。
首先,我们定义一个用于规范扩展部 件行为的接口。
然后,写两个类来实现上 面的接口,并将它们导出。
时间: 2024-10-29 04:32:29