2011-09-14 61 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"); 

您正在使用配置方法,它只是將另一個配置添加到容器。考慮如果您將更改爲初始化,它初始化一個新的配置。