我在 Infrastructure.Module 项目中创建了一个新视图(LogView)。此视图将用作 VS 中的输出窗口之类的 LogViewer。我想从不同的模块在这个 LogView 中编写不同的状态消息。
我还创建了一个 LogWriter 类,它正在发布一个事件以将消息写入 LogView
我在整个应用程序中访问这个 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>();
在另一个项目中,我正在使用它
var logWriter = WorkItem.Services.Get(); if (logWriter != null) logWriter.WriteMsg("message");
但它让我返回null。
模块加载顺序也是正确的。