子类中的MEF导入对象为NULL

时间:2015-06-09 14:35:33

标签: c# .net mef

我面临一个奇怪的问题,即在一个类中可以很好地导入对象。 如果我从第一个类创建另一个类的实例,然后尝试在子类中导入相同的对象,导入总是失败!

头等舱:

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
    }
}

所有这些都是伪代码,当然,但它正确地反映了我的代码是如何构建的。 为什么子类中的导入失败?

1 个答案:

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