【发布时间】:2010-11-17 12:21:24
【问题描述】:
是否可以为 MEF 容器提供延迟对象初始化程序?
这是一个例子:
[Export]
public class Bar
{
[ImportingConstructor[
public Bar([Import] Lazy<Foo> foo)
{
// [..]
}
}
TypeCatalog catalog = new TypeCatalog(typeof(Bar));
CompositionContainer container = new CompositionContainer(catalog);
Lazy<Foo> initializer = new Lazy(() =>
{
Foo foo = new Foo();
// foo initialization here
return foo;
});
container.ComposeExportedValue(initializer);
CompositionBatch batch = new CompositionBatch();
container.Compose(batch);
var export = container.GetExportedValue<Bar>(); // composition fails
这段代码不起作用,但如果我调用 container.ComposeExportedValue(new Foo()),它就会起作用。 我想直接传递一个委托来创建惰性对象。是否可以不需要自定义导出提供程序?
谢谢
【问题讨论】:
标签: c# .net-4.0 mef composition