我的结构有很多属性,所有枚举。
我喜欢做的是遍历属性并获取枚举的基础类型或值的枚举列表。因此,我可以为它们创建下拉列表,而无需为每个代码编写代码。
我设法获得所选值,枚举名称,描述等。但我仍然坚持这一部分。任何帮助将不胜感激。
答案 0 :(得分:0)
您可以使用反射轻松遍历类的每个属性,并确定哪些是枚举,哪些不是(通过使用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是您在迭代类的属性时找到的枚举的基础类型。
然后,您可以使用结果使用枚举的名称和值填充相应的下拉列表。