【发布时间】:2013-10-17 15:46:27
【问题描述】:
我开始创建基于 Observable Pattern 的日志系统。为此,我使用反应式扩展。 我有一个名为 ILogInfo 的 IObservable 和一个名为 ILogObserver 的 IObserver。 我有一个主应用程序,其中包含使用共享库的各种模块。每个模块都实现了 ILogInfo 的观察者,并且模块可以并行工作。我的问题是,我只想观察在我的模块范围内注册的 ILogInfo。
在这个方案中,我有两个模块(模块 A 和模块 B),每个模块使用许多通过 ILogInfo 推送信息的库。当 LibC 推送一个新的 ILogInfo 时,我希望只有调用模块捕获(观察)信息。比如来自Module B的来电,我没有Module A观察到的信息,怎么办?
【问题讨论】:
-
在 ILogInfo 中有一个“发件人”字段怎么样?然后您可以将日志推送到公共总线上,消费者可以使用 logBus.Where(l=>l.Sender == moduleA) 过滤流
-
感谢您的评论,但如果我这样做,我必须在每个级别转发发件人信息,而且我有太多库暂时无法考虑此解决方案。
标签: c# .net multithreading system.reactive