C# 如何将简易喷油器与EasyNetQ配合使用?
正在尝试使用EasyNetQ配置简单注入器DI库。实现这一目标的正确方法是什么 项目中提供了NuGet软件包“EasyNetQ.DI.SimpleInjector”。添加了类似C# 如何将简易喷油器与EasyNetQ配合使用?,c#,rabbitmq,simple-injector,easynetq,C#,Rabbitmq,Simple Injector,Easynetq,正在尝试使用EasyNetQ配置简单注入器DI库。实现这一目标的正确方法是什么 项目中提供了NuGet软件包“EasyNetQ.DI.SimpleInjector”。添加了类似InjectionExtensions.RegistereAsysNetQContainerFactory(容器)的代码。但是,当尝试创建总线时,比如Bus=RabbitHutch.CreateBus()。它抛出了一个错误,比如 在第一次调用GetInstance、GetAllInstances和Verify之后,无法更改
InjectionExtensions.RegistereAsysNetQContainerFactory(容器)的代码代码>。但是,当尝试创建总线时,比如Bus=RabbitHutch.CreateBus()
。它抛出了一个错误,比如
在第一次调用GetInstance、GetAllInstances和Verify之后,无法更改容器
如果我用简单的注入器注册总线对象,比如
container.Register<IBus>(() => RabbitHutch.CreateBus(
"username=guest;password=guest;virtualHost=chidemo;host=localhost"),
Lifestyle.Singleton);
container.Register(()=>RabbitHutch.CreateBus(
“username=guest;password=guest;virtualHost=chidemo;host=localhost”),
生活方式(单身);
然后使用构造函数注入它,它就可以正常工作了。但是它看起来并不是“EasyNetQ.DI.SimpleInjector”包的正确用法
有人能建议正确的方法或共享工作代码片段吗
@dotnetjunkie@gpauls:如果你能提供专家意见,那就太好了 我还没有编写包,但如果:
container.Register<IBus>(() => RabbitHutch.CreateBus(
"username=guest;password=guest;virtualHost=chidemo;host=localhost"),
Lifestyle.Singleton);
container.Register(()=>RabbitHutch.CreateBus(
“username=guest;password=guest;virtualHost=chidemo;host=localhost”),
生活方式(单身);
对你有效,这对我来说似乎是一个完美的法律解决方案
这里是一个单元测试,但它似乎只是模拟IBU,而不是实例化它:
不幸的是,EasyNetQ的构建并没有考虑DI构建的单独配置/构建步骤,因此容器需要支持组件的运行时注册
如果它对您不起作用,请在此处提交问题:
也许提到“gpauls”,他贡献了SimpleInjector软件包,他可能有一个有效的示例解决方案。@Sud,如果你在你创建的问题中也提到“dotnetjunkie”,Simple Injector背后的主要开发人员也可以看到这个问题。@Wiebe:将总线注册为singleton对我有用。我很想知道NuGet软件包的用法。谢谢你的回复@史蒂文:我更新了这期杂志。希望创造者会回应:)