如何访问NServiceBus依赖项注入容器?

如何访问NServiceBus依赖项注入容器?,nservicebus,nservicebus5,Nservicebus,Nservicebus5,我正在使用NserviceBus5的默认依赖项注入特性。我想在端点配置中注册一个依赖于IBU的单例 例: configuration.RegisterComponents(r=> { r、 RegisterSingleton(新的MyDependency(resolveIBus()); ... } 如何使用NServiceBus的开箱即用依赖项注入解析上述PSEDOO代码中的IBus实例?正确的语法是: configuration.RegisterComponents(r=> { r、 Con

我正在使用NserviceBus5的默认依赖项注入特性。我想在端点配置中注册一个依赖于IBU的单例

例:

configuration.RegisterComponents(r=>
{
r、 RegisterSingleton(新的MyDependency(resolveIBus());
...
}

如何使用NServiceBus的开箱即用依赖项注入解析上述PSEDOO代码中的IBus实例?

正确的语法是:

configuration.RegisterComponents(r=>
{
r、 ConfigureComponent(DependencyLifecycle.SingleInstance);
...
}
依赖关系机制将调查MyDependency类型的构造函数,并选择它可以完全解析的最简单的构造函数。因此,您需要创建
MyDependency
类型,如下所示:

公共类MyDependency
{
公共MyDependency(IBus总线)
{
}
}
更多信息请参阅

如果您只知道在运行时需要哪种类型的服务,那么您可以像这样使用
IServiceProvider
服务:

公共类MyDependency
{ 
公共MyDependency(IServiceProvider服务提供商)
{ 
...
var myService=(IMyService)serviceProvider.GetService(typeof(IMyService));
...
}
} 

configureComponents.ConfigureComponent(DependencyLifecycle.SingleInstance)
IBus
将被注入到您的
MyDependency
中@tchelidze所说的内容。
IBus
实现已经在容器上注册并且可以被注入。这确实帮助我实现了我想要做的事情,但我很好奇是否有任何方法可以检索配置的组件。我使用的其他IOC工具n通常有一个
容器。解析
某种方法可以获得配置的对象我不太熟悉NServiceBus中内置的依赖机制,但我提供的文档链接也解释了如何配置NServiceBus以使用您知道的IOC。另一种实现方法是使用他
IServiceProvider
这样的服务:公共类MyDependency{public MyDependency(IServiceProvider服务提供者){var myService=(IMyService)serviceProvider.GetService(typeof(IMyService));}我认为这完全回答了这个问题。介意在你的答案中添加这个吗?我用一个iSeries Provider示例扩展了我的答案。。。