使用统一容器获取 BusHealth 实例
Getting an instance of BusHealth using unity container
如何在 Prism 中使用 Unity 容器 IoC 或不使用 IoC 容器获取 bushealth 实例? Mass Transit 依赖于 Microsoft 依赖注入,但是我正在使用 Bus Factory 创建一个总线实例,并且它始终无法将 DI 用于遗留代码。
_busControl = Bus.Factory.CreateUsingRabbitMq(sbc =>
{
sbc.Host(host, h =>
{
h.Username(username);
h.Password(password);
h.RequestedConnectionTimeout(timeout);
});
sbc.ReceiveEndpoint(e =>
{
...
});
您可以创建 BusHealth
的实例,在构造函数上传递总线实例,或者您可以将 IBusHealth
注册为容器中的服务,实现类型为 BusHealth
(这将需要 IBus
也被注册,因为它是必需的构造函数依赖项)。
然后您可以在您的应用程序中使用 IBusHealth
接口来检查总线健康状况。
var busHealth = new BusHealth("bus");
_busControl = Bus.Factory.CreateUsingRabbitMq(sbc =>
{
sbc.ConnectBusObserver(busHealth);
sbc.ConnectEndpointConfigurationObserver(busHealth);
sbc.Host(host, h =>
{
h.Username(username);
h.Password(password);
h.RequestedConnectionTimeout(timeout);
});
sbc.ReceiveEndpoint(e =>
{
// ...
});
});
当然,这并没有解释 bus/health 对象如何进入您的容器,但我想您明白了。
如何在 Prism 中使用 Unity 容器 IoC 或不使用 IoC 容器获取 bushealth 实例? Mass Transit 依赖于 Microsoft 依赖注入,但是我正在使用 Bus Factory 创建一个总线实例,并且它始终无法将 DI 用于遗留代码。
_busControl = Bus.Factory.CreateUsingRabbitMq(sbc =>
{
sbc.Host(host, h =>
{
h.Username(username);
h.Password(password);
h.RequestedConnectionTimeout(timeout);
});
sbc.ReceiveEndpoint(e =>
{
...
});
您可以创建 BusHealth
的实例,在构造函数上传递总线实例,或者您可以将 IBusHealth
注册为容器中的服务,实现类型为 BusHealth
(这将需要 IBus
也被注册,因为它是必需的构造函数依赖项)。
然后您可以在您的应用程序中使用 IBusHealth
接口来检查总线健康状况。
var busHealth = new BusHealth("bus");
_busControl = Bus.Factory.CreateUsingRabbitMq(sbc =>
{
sbc.ConnectBusObserver(busHealth);
sbc.ConnectEndpointConfigurationObserver(busHealth);
sbc.Host(host, h =>
{
h.Username(username);
h.Password(password);
h.RequestedConnectionTimeout(timeout);
});
sbc.ReceiveEndpoint(e =>
{
// ...
});
});
当然,这并没有解释 bus/health 对象如何进入您的容器,但我想您明白了。