What's the best C# pattern for implementing a hierarchy with an enum?

前端 未结 3 787
情深已故
情深已故 2021-02-14 17:10

I\'m implementing value types which represents a distance (or length). There\'s an enum that represents the different units of measure, eg:

public enum Distance         


        
3条回答
  •  眼角桃花
    2021-02-14 17:11

    Maybe all you need is a function that returns a corresponding unit subset

    class UnitSystem
    {
      public enum Type
      {
        Metric,
        Imperial
      }
    
      public static DistanceUnit[] GetUnits(Type type)
      {
        switch (type)
        {
          case Type.Metric:
            return new DistanceUnit[] {
              DistanceUnit.Millimeter,
              DistanceUnit.Centimeter,
              DistanceUnit.Meter,
              DistanceUnit.Kilometer
            }
    
          case Type.Imperial:
            return new DistanceUnit[] {
              DistanceUnit.Inch,
              DistanceUnit.Foot,
              DistanceUnit.Yard,
              DistanceUnit.Mile
            }
        }
      }
    
      public static Type GetType(DistanceUnit unit)
      {
        switch (unit)
        {
          case DistanceUnit.Millimeter:
          case DistanceUnit.Centimeter:
          case DistanceUnit.Meter:
          case DistanceUnit.Kilometer:
            return Type.Metric;
    
          case DistanceUnit.Inch:
          case DistanceUnit.Foot:
          case DistanceUnit.Yard:
          case DistanceUnit.Mile:
            return Type.Imperial;
        }
      }
    }
    

提交回复
热议问题