我想比較從web服務獲得的值,但有時會得到int值,有時會得到字符串。所以這將是很好的,我只能檢查Type.value1。如何在枚舉中爲相同定義設置兩個值C#
例如:
enum Type { value1 = 1 , value1="one"}
和類似的更多的值2,等等 但當然,我不能這樣做,因爲我不能爲值1添加兩個。定義。
我想比較從web服務獲得的值,但有時會得到int值,有時會得到字符串。所以這將是很好的,我只能檢查Type.value1。如何在枚舉中爲相同定義設置兩個值C#
例如:
enum Type { value1 = 1 , value1="one"}
和類似的更多的值2,等等 但當然,我不能這樣做,因爲我不能爲值1添加兩個。定義。
有時候,其行爲大多喜歡一個枚舉,但有一些更豐富的行爲類型可以是非常有用的:
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());
請澄清您的具體問題或添加其他詳細信息以突出顯示您的需要。因爲它目前已經寫好,所以很難準確地說出你在問什麼。 –
請解釋你想達到的目標,可能有更好的方法。 –