1

我正在尝试比较从 Web 服务获得的值,但有时我得到 int 值,有时我得到字符串。所以如果我只能检查 Type.value1 那就太好了。

例如:

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

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

4

3 回答 3

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");
}
于 2013-11-04T05:48:47.333 回答
4

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

enum Type 
{ 
    [Description("One")]
    value1 = 1 
}
于 2013-11-04T05:39:58.877 回答
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());
于 2013-11-04T07:13:49.847 回答