[英]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.