尝试创建获取任何枚举属性值的枚举扩展方法时,我遇到了以下情况:
编译 VS 2010 下面的代码时显示错误:方法 'GetValue' 没有重载需要 1 个参数。注释代码并使用监视工具时 - 该行返回值(见附图)。
知道为什么吗?
public static class EnumExtensions
{
public static IEnumerable<object> GetAttributeValue(this Enum enm, Type attribute, string attributeName)
{
FieldInfo fi = enm.GetType().GetField(enm.ToString());
var fiAtts = fi.GetCustomAttributes(attribute, false);
if (fiAtts.Length == 0)
return null;
foreach (var att in fiAtts)
{
//VS2010 throws an error: No overload for method 'GetValue' takes 1 argument
//yield ==> Ignore
return att.GetType().GetProperty(attributeName).GetValue(att);
}
}
}