因為案子是承接先人的意志,所以一時無法消化,想請教各位大大做法
下面有一段 Enum
public enum testGiftType
{
[EnumDescription("禮物1")]
Introducer = 2,
[EnumDescription("禮物2")]
IntroducerBonus = 9,
[EnumDescription("禮物3")]
Presentee = 'K',
[EnumDescription("禮物4")]
PresenteeBonus = 'L'
}
這邊會發現Enum的index裡面的型態有char也有int,導致於用Index去GetEnumDescription時會有些卡卡的
這邊附上code
//(stirng)giftType ---回傳的資料
GetEnumDescription((testGiftType)(int.TryParse(giftType, out tmp) ? tmp : char.Parse(giftType)));
//轉換方法
protected string GetEnumDescription<T>(T value)
{
FieldInfo fi = value.GetType().GetField(value.ToString());
EnumDescriptionAttribute[] attributes =
(EnumDescriptionAttribute[])fi.GetCustomAttributes(typeof(EnumDescriptionAttribute), false);
if ((attributes != null) && (attributes.Length > 0))
return attributes[0].Description;
else return value.ToString();
}
這邊是可以正常work,但我想把 giftType 轉換成 Enum 這段寫成一個轉換的方法,最後回傳Enum的資料,但不能確定來源是哪一種型態,不知道怎麼下手?
再麻煩各位高手提供方向
其實enum可以接受的型態是int,
之所以可以這樣設定是因為char基本上包含在int裡面,
轉型成int會轉換成ASCII碼,
我下面做了一點測試,
int index = (int)testGiftType.Presentee;
Console.WriteLine(index);
Console.WriteLine(index == (int)testGiftType.Presentee);
得到的結果是
75
True