2011-11-11 22 views
0

我的情況是:我的項目StructureMap規則

兩個不同的部分(ASP.NET MVC領域)需要相同的構造器注入的辛格爾頓,但不同的情況設置略有不同。

例如

地盤面積=自己的單身

管理區=自己的單身

難道這通過StructureMap能實現嗎?項目的各個部分位於不同的名稱空間中。

+0

我不知道如果我得到你的問題。 Site Area是否需要SomeDependency和Admin需要另一種類型的SomeDependency,並且SomeDependency都應該是單例?還是說,網站區和管理區都是單身人士,需要與單身人士相同的依賴關係? – Bassetassen

+0

第一。管理員和網站需要不同的SomeDependency作爲單身人士。 – Phil

回答

0

如果您將一個單例作爲默認值,將一個作爲命名實例,則可以執行此操作。在這些地方,您需要命名實例,將您的依賴關係映射到使用命名實例而不是默認實例。

Container container = new Container(x => { 
     x.For<ISomeDependency>().Singleton().Use<SomeDependency>(); // User 
     x.For<ISomeDependency>().Singleton().Add<SomeDependency>().Named("admin"); 
}); 

在上面的例子中「使用<>」,標誌着默認,而「添加<>」被添加命名實例。

這將讓你默認:

container.GetInstance<ISomeDependency>(); 

雖然這一個會得到您的命名實例:

container.GetInstance<ISomeDependency>("admin");