繁体   English   中英

我如何获得MEF容器进行自我注射

[英]How do i get MEF container to inject himself

我正在将构造函数注入与MEF成分容器一起使用,我想知道如何使CompositionContainer自己将其注入到他提供的对象的实例上。

您可以使用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的“正常”用例。

我不确定是否可以。 想象一下,您有一个包含三个类的容器,其中一个还包含了包含三个类的容器本身。 这将是一个stackoverflow :)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM