问题描述
我正在使用NServiceBus 5的默认依赖项注入功能。我想在端点配置中注册一个依赖IBus的单例。
例如:
configuration.RegisterComponents(r =>
{
r.RegisterSingleton(new MyDependency(resolveIBus()));
...
}
如何使用NServiceBus开箱即用的依赖项注入来解析上述pseduo代码中的IBus实例?
解决方法
正确的语法为:
configuration.RegisterComponents(r =>
{
r.ConfigureComponent<MyDependency>(DependencyLifecycle.SingleInstance);
...
}
依赖机制将调查MyDependency类型的构造函数,并选择可以完全解决的最简单的构造函数。因此,您需要像这样创建MyDependency
类型:
public class MyDependency
{
public MyDependency(IBus bus)
{
}
}
中的更多信息
如果仅在运行时知道所需的服务类型,则可以像这样使用IServiceProvider
服务:
public class MyDependency
{
public MyDependency(IServiceProvider serviceProvider)
{
...
var myService = (IMyService)serviceProvider.GetService(typeof(IMyService));
...
}
}