我想要什么:解决对象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