Как мы можем Refactor Switch case заявление при работе с примитивами - PullRequest
1 голос
/ 07 марта 2019

Этот фрагмент кода нарушает принцип Открытого и Закрытого, есть ли способ, которым мы можем реорганизовать этот код, поскольку каждый год мы добавляем больше случаев.

  public ISampleDataEnhancer GetEnhancer(Dictionary<string, object> data)
    {
        var typeEnhancer = ((Data.BaseSampleData)data["DataObject"]).TypeOfEnhancer;

        switch (typeEnhancer)
        {
            case "V2018.SampleA":
                {
                    return new ADataEnhancer2018();
                }

            case "V2018.SampleB":
                {
                    return new BDataEnhancer2018();
                }

            case "V2019.SampleA":
                {
                    return new ADataEnhancer2019();
                }

            case "V2019.SampleB":
                {
                    return new GRDataEnhancer2019();
                }

            default:
                return null;
        }
    }
...