在MEF中,ImportingConstructor的容器在哪里?

时间:2014-09-22 22:21:01

标签: c#-4.0 mef

我正在尝试在我的班级中使用MEF ImportingConstructor,虽然我过去成功使用过MEF,但我总是开始创建CompositionContainer来组装所有导出。

ImportingConstructor使用什么容器来满足它的导入?

1 个答案:

答案 0 :(得分:0)

您仍需要创建容器并自行提供导出或提供目录以确定如何查找导出。提供这些后,将从用于获取导出值的容器中解析导入。

所以如果你有:

[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。基本上,您只需要为要显示其导出的程序集添加目录。