我正在将构造函数注入与 MEF 组合容器一起使用,我想知道如何使组合容器将自身注入到他提供的对象的实例上。
问问题
1000 次
2 回答
2
您可以使用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 的“正常”用例。
于 2013-11-14T10:33:00.720 回答
0
我不确定它是否可以工作。假设您有一个包含三个类的容器,其中一个还包含容器本身,其中包含三个类。这将是一个堆栈溢出 :)
于 2013-11-20T09:29:42.733 回答