structuremap - 在 ObjectFactory 中注册命名实例

标签 structuremap

我尝试在结构图中注册命名实例。但是我的试验没有成功。

正确的做法是什么?

目前我是这样做的:

IService bus = CreateInstanceOfServiceBus();
ObjectFactory.Configure(cfg => cfg.For<IServiceBus>()
                                  .AddInstances(x =>x.IsThis(bus)
                                  .Named("foobar"))
                                  .Singleton());

但是当我尝试获取命名实例时,什么也找不到:

ObjectFactory.TryGetInstance<IServiceBus>("foobar");

提前致谢。 最好的问候。

约阿希姆

最佳答案

您可以简单地注册如下

IServiceBus bus = CreateInstanceOfServiceBus();
ObjectFactory.Initialize(x => x.ForSingletonOf<IServiceBus>().Use(bus).Named("bus")); 

现在您可以像这样解析实例

ObjectFactory.GetNamedInstance<IServiceBus>("bus");

ObjectFactory.TryGetInstance<IServiceBus>("bus");

您正在使用 Configure 方法,它只是将另一个配置添加到容器中。考虑是否要更改为Initialize,这会初始化一个新配置。

关于structuremap - 在 ObjectFactory 中注册命名实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7415839/

相关文章:

c# - 结构图范围/生命周期指南?

asp.net-mvc - Ninject 3.0 MVC kernel.bind 错误自动注册

.net - Structuremap - 多个接口(interface)实现

generics - StructureMap 2.6.1,一个 IRepository<T> 和一个 EFRepository<T,TContext>

c#-4.0 - 如何为 asp.net MVC 5 配置 StructureMap

c# - 结构图配置异常

c# - 结构图 - 如何在特定层中注册特定类型

asp.net-mvc - 无参数构造函数、结构图、新区域