2016-09-28 6 views
1

EasyNetQ로 Simple Injector DI 라이브러리를 구성하려고합니다. 이것을 달성하기위한 올바른 방법은 무엇입니까?EasyInQ에서 Simple Injector를 사용하는 방법은 무엇입니까?

프로젝트에 포함 된 'EasyNetQ.DI.SimpleInjector'라는 NuGet 패키지가 있습니다. InjectionExtensions.RegisterAsEasyNetQContainerFactory(container);과 같은 코드가 추가되었습니다. 그러나 Bus = RabbitHutch.CreateBus(<ConnectionString>)과 같은 버스를 만들려고 할 때. 이 컨테이너는하는 GetInstance, GetAllInstances에 대한 첫 번째 호출 후 변경할 나는

container.Register<IBus>(() => RabbitHutch.CreateBus(
    "username=guest;password=guest;virtualHost=chidemo;host=localhost"), 
    Lifestyle.Singleton); 
같은 간단한 인젝터와 버스 개체를 등록하면

을 확인 할 수없는

같은 오류를 던지고있다

그리고 생성자를 사용하여 주입하면 정상적으로 작동합니다. 하지만 'EasyNetQ.DI.SimpleInjector'패키지를 올바르게 사용하지 않은 것처럼 보입니다.

누구나 올바른 접근법을 제안하거나 작업 코드 스 니펫을 공유 할 수 있습니까?

@ dotnetjunkie @ gpauls : 전문가의 의견을 제시 할 수 있다면 정말 좋습니다.

답변

1

나는 패키지를 작성,하지만 한이 같은 경우 나에게 완벽하게 합법적 솔루션 것 같아 당신을 위해

container.Register<IBus>(() => RabbitHutch.CreateBus(
    "username=guest;password=guest;virtualHost=chidemo;host=localhost"), 
    Lifestyle.Singleton); 

작품. 여기

는 단위 테스트, 그러나 단지 그것을 인스턴스화 할의 IBus를 조롱하는 것 같다 https://github.com/EasyNetQ/EasyNetQ/blob/master/Source/EasyNetQ.DI.Tests/SimpleInjectorAdapterTests.cs

불행하게도 EasyNetQ 별도의 구성으로 구축되지 않은/DI 건설을위한 마음의 단계, 그래서 용기 요구를 구축 구성 요소의 런타임 등록을 지원합니다. 어떻게 든 당신을 위해 작동하지 않는 경우

는, 여기에 문제 제기하십시오 https://github.com/EasyNetQ/EasyNetQ/issues

그리고 어쩌면이 'gpauls'을 언급, 그는 SimpleInjector 패키지를 기여, 그는 작업 예제 솔루션이있을 수 있습니다.

+1

@Sud 당신이 만든 이슈에서 'dotnetjunkie'도 언급한다면 Simple Injector의 주 개발자가 그 문제를 볼 수 있습니다. – Steven

+0

@Wiebe : 싱글 톤으로 버스를 등록하는 것이 저에게 효과적입니다. 나는 NuGet 패키지의 사용법을 알고 싶어했다. 답변 해 주셔서 감사합니다. – Sud

+0

@Steven : 문제를 업데이트했습니다. 희망 작성자가 응답합니다 :) – Sud