我正在寻找一种通过提供显示名称来查找枚举字段的方法。为了查找显示名称,我编写了这个片段,它将适当的字段(如果可用)作为任意类型返回给我。
if (!type.IsEnum) throw new ArgumentException("type");
return (from field in type.GetFields(BindingFlags.Public | BindingFlags.Static)
where field.IsDefined(typeof(DisplayNameAttribute))
let attribute = field.GetCustomAttribute(typeof(DisplayNameAttribute)) as DisplayNameAttribute
where attribute != null && attribute.DisplayName.Equals(lookup, StringComparison.InvariantCultureIgnoreCase)
select (T)field.GetValue(null)).FirstOrDefault();
现在,我想这样称呼它:
MyEnum instance = MyEnum.GetFieldByDisplayName("my friendly name");
我尝试创建一个将“ this Type
”和“ this Enum
”作为参数的扩展方法,但它从未出现在 MyEnum 上。我究竟做错了什么?