TL; 일부 속성은 필요할 때 서비스에 주입되지 않습니다. Nservicebus는 어떻게 structuremap에서 중첩 된 컨테이너를 처리합니까?Nservicebus는 어떻게 structuremap에서 중첩 된 컨테이너를 처리합니까?
안녕 얘들 아 여기. 현재 NSB6 프로젝트로 업그레이드 중입니다. Structuremap과의 종속성 주입에 대해 몇 가지 질문이 있습니다.
우리는 핸들러 내부에서 호출하는 ISendOnlyBus를 사용하는 일부 서비스를 제공합니다. 테스트 용으로 (나는 핸들러가 작동하도록하고 싶다) IMessageHandlerContext로 바꾸었다. 그리고 핸들러의 시작 부분에서 컨테이너에 컨텍스트를 삽입하고있다. 예상대로 작동하지만 IMessageHandlerContext는 이러한 서비스에서 해결되고 사용할 수 있습니다.
public class MyMessageHandler : IHandleMessage<IMyMessage>
{
private IContainer _container;
private ISomeService _someService;
public MyMessageHandler (IContainer container, ISomeService someService)
{
_container = container;
_someService = someService;
}
public async Task Handle(IMyMessage message, IMessageHandlerContext context)
{
_container.Inject(typeof(IMessageHandlerContext), context);
_someService.DoSomething();
}
}
public class SomeService : ISomeService
{
private IMessageHandlerContext _context;
public SomeService(IMessageHandlerContext context)
{
_context = context;
}
public void DoSomething()
{
_context.Send<ISomeMessage>(x => {
//... init message
});
}
}
이제 문제는 우리가 nservicebus 메시지를 전송하는 엔티티 통해 NHibernate에 사용자 정의 IPostUpdateEventListener을 가지고있다. 버전 5에서는 다른 서비스와 마찬가지로 ISendOnlyEndpoint가 전송에 사용되지만 이번에는 Structuremap에 의해 컨텍스트가 해석되지 않습니다. nservicebus가 메시지 처리기 내부에서 중첩 된 컨테이너를 관리하는 방법과 궁금한 점이 있습니다. 나는 그것에 대한 어떤 문서를 찾을 수없는 것 같습니다.
StructureMap에서 작동하지 않습니다. 공개 된 문제는 다음과 같습니다. https://github.com/Particular/NServiceBus.StructureMap/issues/52 –