我尝试在结构图中注册命名实例。但是我的试验没有成功。
正确的做法是什么?
目前我是这样做的:
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/