Infrastructure.Module プロジェクトに新しい View (LogView) を作成しました。このビューは、VS の出力ウィンドウのような LogViewer として使用されます。さまざまなモジュールから、この LogView にさまざまなステータス メッセージを書き込みたいと考えています。
また、メッセージを LogView に書き込むイベントを発行するクラス LogWriter を作成しました
アプリケーション全体でこの LogWriter クラスにアクセスする際に問題に直面しています。これを使用する方法を教えてください...
public class LogWriter
{
[EventPublication(EventTopicNames.WriteToLog, PublicationScope.Global)]
public event EventHandler<EventArgs<string>> WriteToLog;
private void OnWriteToLog(EventArgs<string> eventArgs)
{
if (WriteToLog != null)
{
WriteToLog(null, eventArgs);
}
}
public void WriteMsg(string msg)
{
OnWriteToLog(new EventArgs<string>(msg));
}
}
そしてLogViewイベントサブスクリプションでは
[EventSubscription(EventTopicNames.WriteToLog, ThreadOption.UserInterface)]
public void OnWriteToLog(object sender, EventArgs<string> eventArgs)
{
this.txtLogs.AppendText(eventArgs.Data + Environment.NewLine);
}
解決策を教えてください
LogWriter クラスは Infrastructure.Interface プロジェクトにあります LogViewer は Infrastructure.Module プロジェクトにあります
Infrastructure.Module の ModuleController.cs で、WorkItem.Services コレクションに LogWriter を追加しました
WorkItem.Services.AddNew<LogWriter>();
そして、他の1つのプロジェクトで私はそれを使用しています
var logWriter = WorkItem.Services.Get(); if (logWriter != null) logWriter.WriteMsg("メッセージ");
しかし、それは私にnullを返しています。
モジュールのロード シーケンスも正しいです。