我试图比较我从Web服务获得的值,但有时我得到int值,有时我得到字符串。所以我只能检查Type.value1。
会很棒例如:
enum Type { value1 = 1 , value1="one"}
并且喜欢更多的值2,等... 但是,当然,我不能这样做因为我不能为value1添加两个定义。
答案 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());