Я создал новый вид (LogView) в проекте Infrastructure.Module. Это представление будет использоваться как LogViewer как окно вывода в VS. я хочу написать разные сообщения о статусе в этом 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 находится в инфраструктуре. Модульный проект
В ModuleController.cs из Infrastructure.Module я добавил LogWriter в коллекцию WorkItem.Services
WorkItem.Services.AddNew<LogWriter>();
и в одном другом проекте я получаю его, используя
var logWriter = WorkItem.Services.Get ();
if (logWriter! = null)
logWriter.WriteMsg ( "сообщение");
но это возвращает меня к нулю.
последовательность загрузки модуля также правильная.