Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/338.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何将简易喷油器与EasyNetQ配合使用?_C#_Rabbitmq_Simple Injector_Easynetq - Fatal编程技术网

C# 如何将简易喷油器与EasyNetQ配合使用?

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之后,无法更改

正在尝试使用EasyNetQ配置简单注入器DI库。实现这一目标的正确方法是什么

项目中提供了NuGet软件包“EasyNetQ.DI.SimpleInjector”。添加了类似
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软件包的用法。谢谢你的回复@史蒂文:我更新了这期杂志。希望创造者会回应:)