如何在枚举中为同一定义设置两个值,C#

时间:2013-11-04 05:37:32

标签: c# enums enumeration

我试图比较我从Web服务获得的值,但有时我得到int值,有时我得到字符串。所以我只能检查Type.value1。

会很棒

例如:

enum Type { value1 = 1 , value1="one"}

并且喜欢更多的值2,等... 但是,当然,我不能这样做因为我不能为value1添加两个定义。

3 个答案:

答案 0 :(得分:5)

有时,一种行为主要类似于枚举但具有更丰富行为的类型可能非常有用:

public sealed class MyFakeEnum {

  private MyFakeEnum(int value, string description) {
    Value = value;
    Description = description;
  }

  public int Value { get; private set; }

  public string Description { get; private set; }

  // Probably add equality and GetHashCode implementations too.

  public readonly static MyFakeEnum Value1 = new MyFakeEnum(1, "value1");
  public readonly static MyFakeEnum Value2 = new MyFakeEnum(2, "value2");
}

答案 1 :(得分:4)

您可以考虑向枚举添加属性并使用反射。

enum Type 
{ 
    [Description("One")]
    value1 = 1 
}

答案 2 :(得分:0)

我还使用了使用BSoD_ZA描述的描述属性来装饰枚举。但我建议您实现枚举的扩展方法以获取字符串描述,例如:

public static class EnumExtension
{

  public static string ToDescription<TEnum>(this TEnum enumValue) where TEnum : struct
  {
    return ReflectionService.GetClassAttribute<DescriptionAttribute>(enumValue);
  }
}

enum Type 
{ 
  [Description("One")]
  value1 = 1 
}

var value = Type.Value1;
Console.Writeline(value.ToDescription());