2011-09-14 41 views
3

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

什么是正确的方法?提前

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

感谢:

目前我正在做这样的:

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

但是,当我试图让命名实例,没有被发现。 此致敬礼。

约阿希姆

回答

6

你可以简单地注册如下

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

现在可以解决的实例将会是这样

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

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

您正在使用配置方法,它只是将另一个配置添加到容器。考虑如果您将更改为初始化,它初始化一个新的配置。