我如何获得MEF容器注入自己(How do i get MEF container to injec

2019-10-19 00:02发布

我使用的构造函数注射MEF组合容器,我想知道我怎么可以让CompositionContainer中注入本身对他提供对象的实例。

Answer 1:

您可以使用的一个CompositionContainer.ComposeExportedValue方法来创建从一个给定对象的一部分。

下面是一个示例:

class Program
{
    static void Main(string[] args)
    {
        var container = new CompositionContainer(new ApplicationCatalog());
        Console.WriteLine("Main: container [{0}]", container.GetHashCode());

        container.ComposeExportedValue<CompositionContainer>(container);

        var exp = container.GetExportedValue<ExportThatNeedsContainer>();

        Console.ReadKey();
    }
}

[Export]
public class ExportThatNeedsContainer
{
    [ImportingConstructor]
    public ExportThatNeedsContainer(CompositionContainer cc)
    {
        Console.WriteLine("ExportThatNeedsContainer: cc [{0}]", cc.GetHashCode());
    }
}

这工作,但是容器注入的一部分,据我所知,是不是一个“正常”的MEF的用例。



Answer 2:

我不知道它可以工作。 想象一下,你有三类,其中一人还包含容器本身,它包含了三个类的容器。 这将是一个计算器:)



文章来源: How do i get MEF container to inject himself