2013-11-04 54 views
1

我想比較從web服務獲得的值,但有時會得到int值,有時會得到字符串。所以這將是很好的,我只能檢查Type.value1。如何在枚舉中爲相同定義設置兩個值C#

例如:

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

和類似的更多的值2,等等 但當然,我不能這樣做,因爲我不能爲值1添加兩個。定義。

+0

請澄清您的具體問題或添加其他詳細信息以突出顯示您的需要。因爲它目前已經寫好,所以很難準確地說出你在問什麼。 –

+1

請解釋你想達到的目標,可能有更好的方法。 –

回答

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"); 
} 
4

您可以考慮將屬性添加到枚舉並使用反射。

enum Type 
{ 
    [Description("One")] 
    value1 = 1 
} 
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());