0

我正在使用 Ninject 的 bbEventBroker 扩展来连接我的应用程序中的一些 pub/sub。我有发布事件的业务服务,然后我有其他订阅事件的类。Ninject 的接线工作正常,但有一个问题。我没有看到一个明显的地方应该实例化事件订阅者。现在我正在破解它,只是确保在其他任何人使用它之前,所有订阅者都作为单例请求进入内核。但这似乎不对。如果我什么都不做,那么就没有订阅者的实例,并且事件最终会被忽略。

我应该如何实例化 bbEventBroker 事件的订阅者,以便它们最终连接到内核中?

4

2 回答 2

1

bbvEventBroker 假定您的订阅者已经实例化并在 EventBroker 上注册。您可能希望将 Ninject.Extensions.DependencyCreation 视为管理订阅者生命周期的一种方式。我已经在 MVP 应用程序中成功地使用了它,以确保我的所有演示者(即 bbvEventBroker 订阅者)在应用程序启动时被实例化。

于 2013-01-28T15:48:45.407 回答
0

我最终创建了一些非常hacky的代码来解决这个问题,但它确实有效。在连接事件订阅者的 Ninject 模块中,我还为 IEventBroker 添加了一个 OnActivation 处理程序。当调用该激活处理程序时,我在内核上为每个订阅者执行 Get(通过使用反射来查找正确的类型)。这可确保每个订阅者的实例都连接到代理。

这导致了一个问题,由于某种原因,当 Ninject 尝试处理时,可以激活 IEventBrokers。因此,我必须在我的模块上覆盖 OnDispose 并设置一个标志以在 dispose 开始后停止执行上述操作。黑客攻击!:-)

于 2013-02-01T15:39:17.957 回答