在ObjectFactory中注册命名实例

时间:2011-09-14 11:50:55

标签: structuremap

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

正确的方法是什么?

目前我这样做:

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

但是当我尝试获取命名实例时,没有找到任何内容:

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

提前致谢。 最好的问候。

勒夫

1 个答案:

答案 0 :(得分:6)

您只需注册如下

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

现在您可以像这样

解析实例
ObjectFactory.GetNamedInstance<IServiceBus>("bus");

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

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