我以为这很容易,但在扫描了很多页面后,Google 并没有为我提供帮助。
我的测试方法中有以下内容。
var tCatalog = new TypeCatalog(typeof (ISystemIndex));
var aCatalog = new AssemblyCatalog(typeof (ISystemIndex).Assembly);
tCatalog.Parts
为空,而 aCatalog.Parts.Count
为 3(其中一个来自用 [Export(typeof( ISystemIndex))]
,另外两个来自从定义的导出基类继承的类)
我做错了什么?我需要以某种方式初始化 TypeCatalog
吗?
我试图解决的问题是创建一个目录,其中包含程序集中可导出类的子集。
提前致谢。
最佳答案
您正在尝试为接口(interface)定义创建一个 TypeCatalog
,该定义未导出,因为没有 [Export]
属性装饰 ISystemIndex
接口(interface)。
如果您有这样的类(class)
[Export(typeof(ISystemIndex))]
public class MySystemIndex : ISystemIndex
{
}
您将创建一个类型目录
var tCatalog = new TypeCatalog(typeof(MySystemIndex));
那么您就会在tCatalog.Parts
中看到它。
编辑
如果您想要按特定条件过滤目录(例如,在您的情况下,仅导出),请查看 MEF 关于 Filtering Catalogs 的文档
关于c# - TypeCatalog 的使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9199393/