C# 如何在使用原语时重构Switch case语句

C# 如何在使用原语时重构Switch case语句,c#,switch-statement,refactoring,C#,Switch Statement,Refactoring,这段代码违反了开放和封闭原则,随着我们每年增加更多的案例,我们有没有办法重构这段代码 public ISampleDataEnhancer GetEnhancer(Dictionary<string, object> data) { var typeEnhancer = ((Data.BaseSampleData)data["DataObject"]).TypeOfEnhancer; switch (typeEnhancer)

这段代码违反了开放和封闭原则,随着我们每年增加更多的案例,我们有没有办法重构这段代码

  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;
        }
    }
public ISampleDataEnhancer GetEnhancer(字典数据)
{
var typeEnhancer=((Data.BaseSampleData)Data[“DataObject”]).TypeOfEnhancer;
开关(增强器)
{
案例“V2018.Sam答辩”:
{
返回新的ADataEnhancer2018();
}
案例“V2018.样本B”:
{
返回新的BDataEnhancer2018();
}
案例“V2019.Samam辩诉”:
{
返回新的ADataEnhancer2019();
}
案例“V2019.样本B”:
{
返回新的GRDataEnhancer2019();
}
违约:
返回null;
}
}