【发布时间】:2015-08-31 15:04:03
【问题描述】:
对于 NServiceBus 处理程序,我想指定一个命名依赖项。我正在使用城堡温莎作为我的 IOC 容器。默认情况下,NServiceBus 将所有处理程序注册到容器中,因此当我尝试设置注册时,它会在启动时引发错误.....
“无法注册组件 EventMessageHandler。已经有一个具有该名称的组件。您是否要修改现有组件?如果不是,请确保指定一个唯一名称。”。
有没有办法覆盖它来指定命名的依赖项。所以有这样的注册......
container.Register(
Component.For<IService>()
.ImplementedBy<Service>()
.Named("default")
.DependsOn(Dependency.OnValue<Config>(config1)));
container.Register(
Component.For<IHandleMessages<EventMessage>>().ImplementedBy<EventMessageHandler>()
.DependsOn(Dependency.OnComponent(typeof(IService), "default")));
对于一个看起来像这样的处理程序......
public class EventMessageHandler : IHandleMessages<EventMessage>
{
private IService service;
public EventMessageHandler(IService service)
{
this.service = service;
}
public void Handle(EventMessage message)
{
service.DoStuff();
}
}
这是因为我有多个 IService 实现,因此希望能够为特定的处理程序指定特定的实现。
【问题讨论】:
标签: dependency-injection castle-windsor nservicebus