我尝试在结构图中注册命名实例。但我的试验并不成功。
正确的方法是什么?
目前我这样做:
IService bus = CreateInstanceOfServiceBus();
ObjectFactory.Configure(cfg => cfg.For<IServiceBus>()
.AddInstances(x =>x.IsThis(bus)
.Named("foobar"))
.Singleton());
但是当我尝试获取命名实例时,没有找到任何内容:
ObjectFactory.TryGetInstance<IServiceBus>("foobar");
提前致谢。 最好的问候。
勒夫
答案 0 :(得分:6)
您只需注册如下
IServiceBus bus = CreateInstanceOfServiceBus();
ObjectFactory.Initialize(x => x.ForSingletonOf<IServiceBus>().Use(bus).Named("bus"));
现在您可以像这样
解析实例ObjectFactory.GetNamedInstance<IServiceBus>("bus");
或
ObjectFactory.TryGetInstance<IServiceBus>("bus");
您正在使用配置方法,该方法只是将另一个配置添加到容器中。考虑是否要更改为初始化,这会初始化新配置。