假设我有一个Controller对象,它启动一个简单的Windows窗体。 Form中是一个文本框,我想记录我的程序输出。现在,我有一个Controller方法,它调用Form中的方法,然后将记录的消息放在文本框中。然后我在创建想要记录东西的对象时引用Controller并调用“Controller.Log(str)”,但这种方法对我来说似乎很脏。
你们会以什么方式解决这个问题,并保持代码松散耦合?
提前致谢!
答案 0 :(得分:0)
我选择类似于.net Trace类的Listener结构。 UI可以将回调传递到集中式日志记录服务(可能本身通过像Unity这样的IOC创建),并且记录器将其消息发送到该集中式日志记录服务。好消息是,可以有许多消息读者同时允许基于UI和磁盘的日志记录,而不会增加复杂性。
.net Trace架构是一个很好的起点。我可以在代码中的任何地方调用Trace.WriteLine,而无需耦合到监听器。