我在我的一个项目中将 Caliburn.Micro 与 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 继续时,对于 A 类,logger 原来为 null。我想知道为什么 logger 的值设置为 null 以及在哪个位置。