enum 属性値を取得する Enum 拡張メソッドを作成しようとすると、次のような状況に陥りました。
VS 2010 の下のコードをコンパイルすると、次のエラーが表示されます。コードにコメントを付けて監視ツールを使用すると、行は値を返します (添付の画像を参照)。
理由はありますか?
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);
}
}
}