在ObjectFactory中注册命名实例

Joa*_*opf 3 structuremap

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

什么是正确的方法?

目前我这样做:

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

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

ObjectFactory.TryGetInstance<IServiceBus>("foobar");
Run Code Online (Sandbox Code Playgroud)

提前致谢.最好的祝福.

约阿希姆

小智 6

您只需注册如下

IServiceBus bus = CreateInstanceOfServiceBus();
ObjectFactory.Initialize(x => x.ForSingletonOf<IServiceBus>().Use(bus).Named("bus")); 
Run Code Online (Sandbox Code Playgroud)

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

ObjectFactory.GetNamedInstance<IServiceBus>("bus");
Run Code Online (Sandbox Code Playgroud)

要么

ObjectFactory.TryGetInstance<IServiceBus>("bus");
Run Code Online (Sandbox Code Playgroud)

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