2011-10-04 48 views
2

I在启动时创建容器,稍后创建具有Import属性的对象的实例。当我尝试使用它时,此属性为空。Mef导入组合后创建的对象

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

+0

好,我想我可能是误解MEF如何建立。目录仅查看出口我猜,我需要创建一个批处理。我很难弄清楚如何从下到上构建一个系统。任何好的教程? –

回答

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风这一切,等

+1

那么,当你需要编写一个新的导入时,你通过所有类传播你的容器来访问吗? –