【发布时间】:2014-09-22 22:21:01
【问题描述】:
我正在尝试在我的班级中使用 MEF ImportingConstructor,虽然我过去曾成功使用过 MEF,但我总是从创建 CompositionContainer 来组装所有导出的开始。
ImportingConstructor 使用什么容器来满足它的导入?
【问题讨论】:
我正在尝试在我的班级中使用 MEF ImportingConstructor,虽然我过去曾成功使用过 MEF,但我总是从创建 CompositionContainer 来组装所有导出的开始。
ImportingConstructor 使用什么容器来满足它的导入?
【问题讨论】:
您仍然需要创建一个容器并自己提供导出或提供目录来确定如何找到导出。一旦提供了这些,导入将从用于获取导出值的容器中解析。
如果你有:
[Export]
public sealed class A
{
}
[Export]
public sealed class B
{
[ImportingConstructor]
public B(A a)
{
}
}
然后您调用container.GetExportedValue<B>(),它会在目录中查找 B 的导出,然后找到导入构造函数,然后尝试解析 A 的导入。假设 A 类是您可用导出的一部分(或者显式添加,或者更典型地是目录的一部分),然后它将获取 A 的导出值(可能构造它)并使用它来构造 B。
假设您对其中的目录部分感到困惑,请查看this guide。基本上,您只需为要公开其导出的程序集添加目录。
【讨论】: