实战MEF(5)导出元数据2014-03-20 cnblogs 东邪独孤如何理解元数据我们可以把元数据理解为随类型一起导出的附加信息。有时候我们会考虑, 把元数据随类型一并导出,增加一些说明,使得我们在导入的时候,可以多一些筛选条件。默 认的类型导出带有元数据吗上面的内容我说得比较简洁,也许您不是很理解,不要紧,在编程 里面,很多东西我们都是写了代码后才理解的。所以,我的理论功底比较差,最不擅长的就是长篇大论 ,还是从代码中看吧。我们首先要弄清楚一下问题:在我没有手动去添加元数据的默认导出类型 ,是否带有元数据。为了使代码更简单,这里我直接把一个类导出,而不编写公共接口了。

这里我们直接编写一个类,然后直接导入这个类型即可:

示例代码定 在当前程序集中,可以在AssemblyCatalog范围查找。

AssemblyCatalog的Parts属性在智能提示中没有出现(从ComposablePartCatalog类继承下来,可能 是因为虚方法没有被重写,所以没有在智能提示中显示出来),不过的确有这个属性,通过枚举Parts访 问每个导出的组件类,而在ExportDefinitions属性中的每个ExportDefinition对象都有一个Metadata属 性,它就是每个导出的元数据,为字典类型(IDictionary<string, object>),key是字符串类 型,value是任意对象(Object)。运行应用程序后,我们会看到如下图所示的内容:

这个例子表明,在默认情 况下,导出是带有元数据的,从上面的运行结果可以猜到默认的元数据是用于说明导出组件的类型的。