Ninject Event Broker 확장 프로그램을 사용하고 있으며 두 가지 서비스가 있습니다. ServiceOne
은 이벤트 게시자입니다. ServiceTwo
은 구독자입니다. ServiceOne
은 ServiceTwo
에 대해 크게 의존하지 않으므로 DependencyCreation 확장을 사용하여 종속성을 만듭니다.Ninject DependencyCreation 및 EventBroker 확장. 일대일 구독 보장
- 나는이 두 개체 사이의 일대일 이벤트를 정의하려면 :
다음은 요구 사항입니다. DependencyCreation에 의해 생성 된
ServiceTwo
인스턴스 만 이벤트를 받아야합니다. - 그래프의 다른 객체가 더 아래에있는 경우 이벤트를 수신해서는 안됩니다. (이 경우가 아니어야합니다. )
ServiceTwo
은ServiceOne
이 처리 될 때 처리해야합니다.- 이것은 웹 응용 프로그램이며
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");
두 질문 :
여기 내 코드입니다.
내 요구 사항을 충족합니까? 더 좋은 방법이 있습니까?