0

次のコードでパラメータの属性を取得するにはどうすればよいですか?

public void SomeMethod([SomeAttribute] string s)
{
    var someAttribute = ?
}

そして、属性は通常、それがオンになっているメソッド内で使用するためのものではないことを認識しています...ただし、例を単純に保つだけです。

4

2 に答える 2

2

私はちょうどそれを理解しました:

var someAttribute = typeof(SomeClass).GetMethod("SomeMethod").GetParameters().First().GetCustomAttributes(false);

私は頭がおならをしていて、GetCustomAttributesメソッドの代わりにAttributesプロパティを使用していました。

于 2013-01-31T07:23:21.847 に答える
2

まず、:が必要MethodInfoです

var method = typeof(SomeType).GetMethod("SomeMethod");

次に、存在を確認できます。

bool hasAttrib = Attribute.IsDefined(
    method.GetParameters()[0], typeof(SomeAttribute));

またはインスタンスを取得します(より高価です):

var attrib = (SomeAttribute) Attribute.GetCustomAttribute(
    method.GetParameters()[0], typeof(SomeAttribute));
于 2013-01-31T07:24:53.703 に答える