我正在使用 Ninject Event Broker 扩展,我有两个服务。ServiceOne
是事件的发布者。ServiceTwo
是订户。ServiceOne
没有硬依赖ServiceTwo
,我正在使用 DependencyCreation 扩展创建依赖。
以下是要求:
- 我想在这两个对象之间定义一个一对一的事件。只有
ServiceTwo
DependencyCreation 创建的实例应该接收该事件。 - 如果在对象图中还有其他
ServiceTwo
进一步向下的实例,则它们不应收到该事件。(这不应该是这种情况,但我想说明它) ServiceTwo
应在处置时ServiceOne
处置。- 这是一个 Web 应用程序,它的生命周期
ServiceOne
应该只针对一个请求。
基本上我只是想重现我写作的行为:
var publisher = new Publisher();
var subscriber = new Subscriber();
var subscriber2 = new Subscriber();
publisher.MyEvent += subscriber.MyEventHandler;
一位出版商。一名订户。订阅者 2 没有收到该事件。
这是我的代码:
this.Bind<IServiceOne, ServiceOne>().To<ServiceOne>().Named("ServiceOne").OwnsEventBroker("ServiceOne").RegisterOnEventBroker("ServiceOne");
this.Kernel.DefineDependency<IServiceOne, IServiceTwo>();
this.Bind<IServiceTwo>().To<ServiceTwo>().WhenParentNamed("ServiceOne").InDependencyCreatorScope().RegisterOnEventBroker("ServiceOne");
两个问题。
这能满足我的要求吗?有没有更好的办法?