在我的应用程序中,我使用Unity容器(通过ServiceLocator)和构造函数注入。
我有以下课程结构:
class Main
{
void Main()
{
var c = ServiceLocator.Container.Resolve<C>(new ParameterOverrides { { "somedate", somedate } }, new ParameterOverrides { { "someRates", someRates } });
var b = ServiceLocator.Container.Resolve<B>(new ParameterOverrides { { "c", c } }, new ParameterOverrides { { "somePara", somePara } });
}
}
class A
{
private B _b;
public A(B b)
{
_b = b;
}
}
class B
{
private C _c;
public B(C c, string somePara)
{
_c = c;
}
}
class C
{
public C(DateTime somedate, IDictionary<string, double> someRates)
{
}
}
现在你可以看到我必须调用Resolve方法并传递ParameterOverrides。 当参数和Resolve调用增加时,main方法变得混乱,就像C还需要一些其他类实例或参数等。请提出最佳实践来重构这一点。
提前致谢!!!