子 class 中的 MEF 导入对象为 NULL
MEF import object in child class is NULL
我遇到了一个奇怪的问题,可以在 class 中很好地导入对象。
如果我从第一个 class 创建另一个 class 的实例,然后尝试在子 class 中导入相同的对象,导入总是失败!
第一个class:
public class Foo {
[Import]
private SomeExportedType foobar;
public Foo() {
foobar.Test(); // Works just fine
Bar bar = new Bar();
bar.Test();
}
}
第二个class:
public class Bar {
[Import]
private SomeExportedType foobar;
public void Test() {
foobar.Test(); // This fails because foobar is NULL
}
}
所有这些都是伪代码,或者当然,但它正确地反映了我的代码是如何构建的。
为什么导入子 class 失败?
通过手动更新您的 Bar class,您将绕过 MEF,因此无法满足导入,您应该允许 MEF 负责更新 classes。
public class Foo {
[Import]
private SomeExportedType foobar;
[Import]
private Bar bar;
public Foo() {
foobar.Test(); // Works just
bar.Test(); // Should also work fine.
}
}
也尝试导入 Bar 的一个实例 class.. 这样它就会被 MEF 实例化并且导入满足。
我遇到了一个奇怪的问题,可以在 class 中很好地导入对象。 如果我从第一个 class 创建另一个 class 的实例,然后尝试在子 class 中导入相同的对象,导入总是失败!
第一个class:
public class Foo {
[Import]
private SomeExportedType foobar;
public Foo() {
foobar.Test(); // Works just fine
Bar bar = new Bar();
bar.Test();
}
}
第二个class:
public class Bar {
[Import]
private SomeExportedType foobar;
public void Test() {
foobar.Test(); // This fails because foobar is NULL
}
}
所有这些都是伪代码,或者当然,但它正确地反映了我的代码是如何构建的。 为什么导入子 class 失败?
通过手动更新您的 Bar class,您将绕过 MEF,因此无法满足导入,您应该允许 MEF 负责更新 classes。
public class Foo {
[Import]
private SomeExportedType foobar;
[Import]
private Bar bar;
public Foo() {
foobar.Test(); // Works just
bar.Test(); // Should also work fine.
}
}
也尝试导入 Bar 的一个实例 class.. 这样它就会被 MEF 实例化并且导入满足。