我在启动时编写Container,然后创建一个具有Import属性的对象的实例。当我尝试使用它时,此属性为Null。
MEF如何处理稍后创建的对象。我拒绝相信你必须在启动时实例化所有对象。
答案 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
等手动将它们全部组合在一起