c# - TypeCatalog 的使用

标签 c# .net mef

我以为这很容易,但在扫描了很多页面后,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/

相关文章:

c# - 如何判断约会是一次 session ?

c# - 删除所有 DataGrid 行和单元格边框

c# - 无窗口 WPF 应用程序

.net - 使用 DI 传递同一接口(interface)的多个实现

wpf - 从 XAML 设置 ViewModel 属性值

主构造函数上的 F# ImportingConstructor

c# - 变量声明未按预期解析

c# - 使用 lambda 表达式计算两个带有索引的列表的交集

c# - 如何在 .net 核心 Controller 的新类对象中提供 ILogger<ClassName> 实例?

c# - 在 C# 中对 boolean 值使用 &=