Я использую Caliburn.Micro с MEF в одном из моих проектов. Я могу получить импорт в корневой модели. Но если я хочу получить импорт в некоторые другие классы, это не сработает. Например:MEF: [Import] Null Reference
[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
}
}
При запуске приложения, регистратор никогда не устанавливается или просто равна нулю.
Жутко, если добавить импорт в корневой ViewModel следующим образом и установить точку останова, она работает как-то:
[Import]
public ILogger logger {get; set;}
Однако, когда я нажимаю F5, чтобы продолжить, регистратор оказывается нулевым, когда это относится к классу А. Мне интересно, почему значение регистратора установлено равным нулю и в каком месте.
Создаете ли вы объект самостоятельно или вызываете один из методов CompositionContainer.GetExport? –
@PanosRontogiannis На самом деле я создал его сам. –