我正在使用Ninject Event Broker擴展,並且我有兩項服務。 ServiceOne
是活動的發佈者。 ServiceTwo
是用戶。 ServiceOne
對ServiceTwo
沒有很強的依賴性,我使用DependencyCreation擴展創建依賴關係。Ninject依賴關係創建和EventBroker擴展。確保一對一訂購
這裏是要求:
- 我要定義這兩個對象之間的一到一個事件。只有由DependencyCreation創建的
ServiceTwo
實例才能接收該事件。 - 如果在對象 圖表中還存在其他
ServiceTwo
實例,則它們不應該接收該事件。 (這不應該是 ,但我想解釋它) ServiceTwo
應在處置ServiceOne
時處置。- 這是一個Web應用程序,對於一個請求,
ServiceOne
的使用壽命應該只有 。
基本上我只是想重現我的寫作行爲:
var publisher = new Publisher();
var subscriber = new Subscriber();
var subscriber2 = new Subscriber();
publisher.MyEvent += subscriber.MyEventHandler;
一個發佈者。一個用戶。 Subscriber2不會獲得該事件。
這裏是我的代碼:
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");
兩個問題。
這是否符合我的要求? 有沒有更好的方法?