Как мы можем реорганизовать оператор Switch case при работе с примитивами

#c# #switch-statement #refactoring

#c# #оператор switch #рефакторинг

Вопрос:

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

   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;
        }
    }