使用返回枚举类型作为响应的方法来演化库的最佳方法

时间:2017-05-23 09:20:28

标签: .net design-patterns architecture

我有一个.NET库我必须进化。

它有一些返回枚举作为响应的方法。 例如:

    //v1.0
    public enum Vehicle
    {
        Truck,
        Mini,
        Superbike
    }

    public Vehicle getCar(){
        ...
        return Vehicle.XXX;
    }

在2.0版本中,我想定义更多的车辆,所以它就是这样的:

   //v 2.0
    public enum Vehicle
    {
        Truck,
        Mini,
        Superbike,
        WaterBike
    }

    public Vehicle getCar(){
        ...
        return Vehicle.XXX;
    }

许多其他应用程序正在使用此库,因此我不想向后破坏兼容性。  我需要在所有应用程序中将库从1.0迁移(仅更换)到2.0而不会破坏任何内容。考虑到将在getCar()方法中返回一个新类型,应用程序中的旧代码将无法理解。

您如何建议进化图书馆?这是一个设计问题。

1 个答案:

答案 0 :(得分:0)

旧代码不必理解新的Enum类型。

如果旧代码检查卡车的枚举类型并获得WaterBike,那么它就不会对它采取行动,就像它获得Mini一样。