Use of TypeCatalog

本文关键字:TypeCatalog of Use | 更新日期: 2023-09-27 18:24:00

我原以为这会很容易,但在扫描了许多页面后,谷歌并没有帮助我。

我有以下测试方法。

var tCatalog = new TypeCatalog(typeof (ISystemIndex));
var aCatalog = new AssemblyCatalog(typeof (ISystemIndex).Assembly);

tCatalog.Parts为空,而aCatalog.Parts.Count为3(其中一个来自用[Export(typeof(ISystemIndex))]装饰的类,另外两个来自从定义了导出的基继承的类)

我做错了什么?我需要以某种方式初始化TypeCatalog吗?

我试图解决的问题是用程序集中的可导出类的子集创建一个目录。

提前谢谢。

Use of TypeCatalog

您正试图为接口定义创建一个TypeCatalog,但该定义未导出,因为ISystemIndex接口没有装饰[Export]属性。

如果你有这样的课程

[Export(typeof(ISystemIndex))]
public class MySystemIndex : ISystemIndex
{
}

然后创建一个类型目录

var tCatalog = new TypeCatalog(typeof(MySystemIndex));

那么你会在tCatalog.Parts中看到它。

编辑

如果您想让目录按特定标准进行筛选(例如,在您的情况下,仅限于导出),请查看MEF关于筛选目录的文档