C# 类型目录的使用
我原以为这很容易,但在浏览了很多页面之后,谷歌并没有帮我 我有以下一个测试方法C# 类型目录的使用,c#,.net,mef,C#,.net,Mef,我原以为这很容易,但在浏览了很多页面之后,谷歌并没有帮我 我有以下一个测试方法 var tCatalog = new TypeCatalog(typeof (ISystemIndex)); var aCatalog = new AssemblyCatalog(typeof (ISystemIndex).Assembly); tCatalog.Parts为空,而aCatalog.Parts.Count为3(其中一个来自用[Export(typeof(ISystemIndex))]修饰的类),另外
var tCatalog = new TypeCatalog(typeof (ISystemIndex));
var aCatalog = new AssemblyCatalog(typeof (ISystemIndex).Assembly);
tCatalog.Parts
为空,而aCatalog.Parts.Count
为3(其中一个来自用[Export(typeof(ISystemIndex))]修饰的类)
,另外两个来自继承自基本w/导出定义的类)
我做错了什么?我是否需要以某种方式初始化TypeCatalog
我试图解决的问题是在程序集中创建一个包含可导出类子集的目录
提前感谢。您正在尝试为接口定义创建一个
TypeCatalog
,它没有导出,因为没有[Export]
属性装饰ISystemIndex
接口
如果你上过这样的课
[Export(typeof(ISystemIndex))]
public class MySystemIndex : ISystemIndex
{
}
您将创建一个类型目录
var tCatalog = new TypeCatalog(typeof(MySystemIndex));
那么您将在tCatalog.Parts
中看到它
编辑
如果您希望按特定条件筛选目录(例如,在您的情况下,仅导出),请查阅MEF的文档,了解您正在尝试为接口定义创建一个
TypeCatalog
,该目录未导出,因为没有[Export]
属性装饰ISystemIndex
接口
如果你上过这样的课
[Export(typeof(ISystemIndex))]
public class MySystemIndex : ISystemIndex
{
}
您将创建一个类型目录
var tCatalog = new TypeCatalog(typeof(MySystemIndex));
那么您将在tCatalog.Parts
中看到它
编辑
如果您想让目录按特定标准进行筛选(例如,在您的情况下,仅导出),请查看MEF的文档,了解如果他直接在
typeof(MySystemIndex)
上而不是在typeof(ISystemIndex)
上构建TypeCatalog
,而不是在typeof(ISystemIndex)
上构建TypeCatalog
属性有什么意义传递到TypeCatalog
仅告诉目录应该反映哪些类型以查找导出。如果没有导出属性,目录将不包含任何部分。export
属性的意义是什么?如果他直接在typeof(MySystemIndex)
上构建TypeCatalog
,而不是在typeof(ISystemIndex)
上构建TypeCatalog
传递到TypeCatalog
仅告诉目录应该反映哪些类型以查找导出。如果没有“导出”属性,目录将不包含任何零件。