TL;博士; 某些属性在应该注入服务时没有被注入。Nservicebus 如何处理结构图上的嵌套容器?
嘿伙计们,新来的。我目前正在将我们的项目升级到 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 如何以及是否管理消息处理程序中的嵌套容器。我似乎找不到任何文档。