子 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 实例化并且导入满足。