如何将 Simple Injector 与 EasyNetQ 一起使用?
How to use Simple Injector with EasyNetQ?
正在尝试使用 EasyNetQ 配置 Simple Injector DI 库。实现这一目标的正确方法是什么?
项目中包含可用的 NuGet 包 'EasyNetQ.DI.SimpleInjector'。添加了类似 InjectionExtensions.RegisterAsEasyNetQContainerFactory(container);
的代码。但是,当尝试创建像 Bus = RabbitHutch.CreateBus(<ConnectionString>)
这样的总线时。它抛出类似
的错误
The container can't be changed after the first call to GetInstance, GetAllInstances and Verify
如果我用像
这样的简单注入器注册 Bus 对象
container.Register<IBus>(() => RabbitHutch.CreateBus(
"username=guest;password=guest;virtualHost=chidemo;host=localhost"),
Lifestyle.Singleton);
然后使用构造函数注入它,然后它就可以正常工作了。但是看起来 'EasyNetQ.DI.SimpleInjector' 包的使用不正确。
任何人都可以建议正确的方法或分享工作代码片段吗?
@dotnetjunkie @gpauls:如果您能提供专家意见那就太好了!
我没有写包,但是如果这样:
container.Register<IBus>(() => RabbitHutch.CreateBus(
"username=guest;password=guest;virtualHost=chidemo;host=localhost"),
Lifestyle.Singleton);
适合您,对我来说这似乎是一个完全合法的解决方案。
这是一个单元测试,但它似乎只是模拟 IBus,而不是实例化它:
https://github.com/EasyNetQ/EasyNetQ/blob/master/Source/EasyNetQ.DI.Tests/SimpleInjectorAdapterTests.cs
不幸的是,EasyNetQ 构建时并未考虑单独的 configure/build DI 构建步骤,因此容器需要支持组件的运行时注册。
如果它对您不起作用,请在此处提交问题:
https://github.com/EasyNetQ/EasyNetQ/issues
也许会提到 'gpauls',他贡献了 SimpleInjector 包,他可能有一个有效的示例解决方案。
正在尝试使用 EasyNetQ 配置 Simple Injector DI 库。实现这一目标的正确方法是什么?
项目中包含可用的 NuGet 包 'EasyNetQ.DI.SimpleInjector'。添加了类似 InjectionExtensions.RegisterAsEasyNetQContainerFactory(container);
的代码。但是,当尝试创建像 Bus = RabbitHutch.CreateBus(<ConnectionString>)
这样的总线时。它抛出类似
The container can't be changed after the first call to GetInstance, GetAllInstances and Verify
如果我用像
这样的简单注入器注册 Bus 对象container.Register<IBus>(() => RabbitHutch.CreateBus(
"username=guest;password=guest;virtualHost=chidemo;host=localhost"),
Lifestyle.Singleton);
然后使用构造函数注入它,然后它就可以正常工作了。但是看起来 'EasyNetQ.DI.SimpleInjector' 包的使用不正确。
任何人都可以建议正确的方法或分享工作代码片段吗?
@dotnetjunkie @gpauls:如果您能提供专家意见那就太好了!
我没有写包,但是如果这样:
container.Register<IBus>(() => RabbitHutch.CreateBus(
"username=guest;password=guest;virtualHost=chidemo;host=localhost"),
Lifestyle.Singleton);
适合您,对我来说这似乎是一个完全合法的解决方案。
这是一个单元测试,但它似乎只是模拟 IBus,而不是实例化它: https://github.com/EasyNetQ/EasyNetQ/blob/master/Source/EasyNetQ.DI.Tests/SimpleInjectorAdapterTests.cs
不幸的是,EasyNetQ 构建时并未考虑单独的 configure/build DI 构建步骤,因此容器需要支持组件的运行时注册。
如果它对您不起作用,请在此处提交问题: https://github.com/EasyNetQ/EasyNetQ/issues
也许会提到 'gpauls',他贡献了 SimpleInjector 包,他可能有一个有效的示例解决方案。