1. ホーム
  2. c#

メソッドの属性の値を読み取る

2023-10-26 14:27:53

質問

メソッド内から属性の値を読み取ることができるようにしたいのですが、どうすればよいでしょうか。

[MyAttribute("Hello World")]
public void MyMethod()
{
    // Need to read the MyAttribute attribute and get its value
}

どのように解決するのですか?

この問題を解決するには GetCustomAttributes 関数を MethodBase オブジェクトを返します。

最も簡単な方法は MethodBase オブジェクトを取得する最も簡単な方法は MethodBase.GetCurrentMethod . (ただし [MethodImpl(MethodImplOptions.NoInlining)] )

例えば

MethodBase method = MethodBase.GetCurrentMethod();
MyAttribute attr = (MyAttribute)method.GetCustomAttributes(typeof(MyAttribute), true)[0] ;
string value = attr.Value;    //Assumes that MyAttribute has a property called Value

また MethodBase を手動で取得することもできます(この方が速いです)。

MethodBase method = typeof(MyClass).GetMethod("MyMethod");