Mef导入到撰写后创建的对象

时间:2011-10-04 15:45:25

标签: mef composition

我在启动时编写Container,然后创建一个具有Import属性的对象的实例。当我尝试使用它时,此属性为Null。

MEF如何处理稍后创建的对象。我拒绝相信你必须在启动时实例化所有对象。

1 个答案:

答案 0 :(得分:4)

创建容器后,您不必创建实例,这对任何人都没有任何实际帮助。你是如何创建实例的?以下是一些示例,给出了一个示例类:

[Export]
public class MyClass
{
    [Import]
    public MyOtherClass OtherClass { get; set; }
}

我可以:

var myClass = container.GetExportedValue<MyClass>(); // This would automatically compose.

var myExport = container.GetExport<MyClass>();
var myClass = myExport.Value; // This would automatically compose.

var myClass = new MyClass();
container.SatisfyImportsOnce(myClass); // Manually compose your part.

或者使用CompositionBatch等手动将它们全部组合在一起