尝试使用EasyNetQ配置Simple Injector DI库 . 实现这一目标的正确方法是什么?
有一个NuGet包可用'EasyNetQ.DI.SimpleInjector',它包含在项目中 . 添加了像 InjectionExtensions.RegisterAsEasyNetQContainerFactory(container);
这样的代码 . 但是,在尝试创建像 Bus = RabbitHutch.CreateBus(<ConnectionString>)
这样的总线时 . 这是一个错误
首次调用GetInstance,GetAllInstances和Verify后,无法更改容器
如果我使用Simple Injector注册Bus对象
container.Register<IBus>(() => RabbitHutch.CreateBus(
"username=guest;password=guest;virtualHost=chidemo;host=localhost"),
Lifestyle.Singleton);
然后使用构造函数注入它然后它工作正常 . 但是,它看起来不是正确使用'EasyNetQ.DI.SimpleInjector'包 .
任何人都可以建议正确的方法或共享工作代码片段?
@dotnetjunkie @gpauls:如果你能提供专家意见,那就太棒了!
1 回答
我没有写过包,但如果这样:
适合您,对我来说似乎是一个完全合法的解决方案 .
这是一个单元测试,但它似乎只是模拟IBus,而不是实例化它:https://github.com/EasyNetQ/EasyNetQ/blob/master/Source/EasyNetQ.DI.Tests/SimpleInjectorAdapterTests.cs
遗憾的是,EasyNetQ没有针对DI构造构建单独的配置/构建步骤,因此容器需要支持组件的运行时注册 .
如果它不能以某种方式为您工作,请在此处提出问题:https://github.com/EasyNetQ/EasyNetQ/issues
也许可以提一下'gpauls',他贡献了SimpleInjector包,他可能有一个可行的样本解决方案 .