私のプロジェクトの 1 つで MEF と共に Caliburn.Micro を使用しています。ルート ビューモデルでインポートを取得できます。しかし、他のクラスへのインポートを取得したい場合、それは機能しません。例えば:
[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
}
}
アプリケーションを実行すると、ロガーが設定されないか、null に等しくなります。
奇妙なことに、次のようにルート ビューモデルにインポートを追加し、そこにブレークポイントを設定すると、何とか機能します。
[Import]
public ILogger logger {get; set;}
しかし、F5を押して続行すると、クラスAになるとloggerがnullになることがわかりました.loggerの値がなぜnullに設定されているのか、どの場所にあるのか疑問に思っています。