问题描述
如何在Prism中使用Unity容器IoC或不使用IoC容器来获取bushealth的实例? Mass Transit依赖于Microsoft Dependency Injection,但是我使用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 =>
{
// ...
});
});
当然,这并不能解释总线/运行状况对象如何进入您的容器,但我认为您已经明白了。