我面临一个奇怪的问题,即在一个类中可以很好地导入对象。 如果我从第一个类创建另一个类的实例,然后尝试在子类中导入相同的对象,导入总是失败!
头等舱:
public class Foo {
[Import]
private SomeExportedType foobar;
public Foo() {
foobar.Test(); // Works just fine
Bar bar = new Bar();
bar.Test();
}
}
第二课:
public class Bar {
[Import]
private SomeExportedType foobar;
public void Test() {
foobar.Test(); // This fails because foobar is NULL
}
}
所有这些都是伪代码,当然,但它正确地反映了我的代码是如何构建的。 为什么子类中的导入失败?
答案 0 :(得分:1)
通过手动更新你的Bar类,你绕过MEF,因此不满足导入,你应该允许MEF负责新的类。
public class Foo {
[Import]
private SomeExportedType foobar;
[Import]
private Bar bar;
public Foo() {
foobar.Test(); // Works just
bar.Test(); // Should also work fine.
}
}
尝试导入Bar类的实例..这样它将由MEF实例化并且导入满足。