我想要什麼:解決對象A和對象A的內部,我想用同一個容器來解決對象C:IoC容器。注入容器
public static void Work()
{
IUnityContainer con = new UnityContainer();
con.RegisterType<IA, A>();
con.RegisterType<IB, B>();
con.RegisterType<IC, C>();
var a = con.Resolve<IA>();
}
interface IA { }
interface IB { }
interface IC { }
class A : IA
{
public A(IB b, IUnityContainer con)
{
for (int i = 0; i < 10; i++)
{
var c = con.Resolve<IC>();
}
}
}
class B : IB { };
class C : IC { };
問題:在許多網站我看到注入容器是壞主意,但如何處於這種情況?
EDIT 1
服務定位器是一個反模式。因此,如果可以使用Service Locator和IoC Container,爲什麼它可以?
我從你的問題缺少的是*你在這裏試圖解決什麼問題。爲什麼你需要多次解析'IC',爲什麼你需要在'A'的構造函數中做這個。你能否通過使用真實姓名來更具體地描述你的用例,並描述你在做什麼,爲什麼? – Steven
@Steven我想在我的應用程序的許多地方使用容器。我的解決方案是到處注入該容器。我知道注入到處都是壞主意,但服務定位器被稱爲反模式和靜態類更糟糕。 –
這是我清楚的部分。我不清楚的是你的具體用例。請詳細說明一個真實的例子,而不是像'A'和'IC'這樣的類。 – Steven