0
我有一堆屬性,所有枚舉的結構。.net通過反射獲取枚舉類型
我喜歡做的是迭代通過屬性,並獲得枚舉的基礎類型或值的枚舉列表。所以我可以爲他們創建dropdownlists,而無需爲每個人編寫代碼。
我設法得到選定的值,名稱的枚舉,說明等,但我卡在這一部分。任何幫助將不勝感激。
我有一堆屬性,所有枚舉的結構。.net通過反射獲取枚舉類型
我喜歡做的是迭代通過屬性,並獲得枚舉的基礎類型或值的枚舉列表。所以我可以爲他們創建dropdownlists,而無需爲每個人編寫代碼。
我設法得到選定的值,名稱的枚舉,說明等,但我卡在這一部分。任何幫助將不勝感激。
您可以使用反射輕鬆遍歷每個類的屬性,並確定哪些是枚舉,哪些不是(通過使用PropertyType類的IsEnum屬性)。 對於您找到的每個枚舉,可以檢查其基礎類型。
的,你可以使用這樣的通用擴展方法:
public static IDictionary<string, string> EnumToDictionary(this Type t)
{
if (t == null) throw new NullReferenceException();
if (!t.IsEnum) throw new InvalidCastException("object is not an Enumeration");
string[] names = Enum.GetNames(t);
Array values = Enum.GetValues(t);
return (from i in Enumerable.Range(0, names.Length)
select new { Key = names[i], Value = (int)values.GetValue(i) })
.ToDictionary(k => k.Key, k => k.Value.ToString());
}
再這樣稱呼它爲您在課堂上所發現的每個枚舉類型:
var result = typeOfEnum.EnumToDictionary();
哪裏typeOfEnum是在遍歷類的屬性時找到的枚舉的基礎類型。
然後,您可以使用結果使用枚舉的名稱和值填充適當的下拉列表。
你有一些代碼來顯示你如何訪問屬性?有一個Enum.GetValues(類型)來獲取枚舉的值。 –