c#使用Resolve Refactoring的Unity多实例化

时间:2016-07-02 03:32:16

标签: c# unity-container

在我的应用程序中,我使用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还需要一些其他类实例或参数等。请提出最佳实践来重构这一点。

提前致谢!!!

0 个答案:

没有答案