MEF: [Import] Null Reference



我用的是Caliburn。在我的一个项目中使用MEF。我可以在根视图模型中获得导入。但是如果我想导入到其他类中,它将不起作用。例如:

[Export]
public class A
{
    [Import]
    static ILogger logger;
    public static void SomeMethod()
    {
        logger.Log("foobar");
    }
}

[Export(typeof(ILogger))]
public class FileLogger : ILogger
{
    public void Log()
    {
        //some implementations
    }
}

当我运行应用程序时,logger从未设置或只是等于null。

奇怪的是,如果我像下面这样在根视图模型中添加一个导入,并在那里设置一个断点,它就会正常工作:
[Import]
public ILogger logger {get; set;}

然而,当我按F5继续,logger原来是空的,当涉及到类a。我想知道为什么logger的值被设置为空,在哪个地方

您需要使用CompositionContainer来组成或满足对象的导入。

A a = new A();
compositionContainer.ComposeParts(a);

否则,您可以使用CompositionContainer.GetExportXXXX方法之一。这样,MEF将为您创建和组合对象。

相关内容

  • 没有找到相关文章

最新更新