我正在尝试比较从 Web 服务获得的值,但有时我得到 int 值,有时我得到字符串。所以如果我只能检查 Type.value1 那就太好了。
例如:
enum Type { value1 = 1 , value1="one"}
并且喜欢更多的 value2 等...但是当然,我不能这样做,因为我不能为 value1 添加两个定义。
我正在尝试比较从 Web 服务获得的值,但有时我得到 int 值,有时我得到字符串。所以如果我只能检查 Type.value1 那就太好了。
例如:
enum Type { value1 = 1 , value1="one"}
并且喜欢更多的 value2 等...但是当然,我不能这样做,因为我不能为 value1 添加两个定义。
有时,行为主要类似于枚举但具有更丰富行为的类型可能非常有用:
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");
}
您可以考虑向枚举添加属性并使用反射。
enum Type
{
[Description("One")]
value1 = 1
}
我还利用 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());