我使用的构造函数注射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