0

如何获取以下代码中参数的属性?

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

而且我意识到该属性通常不用于它所在的方法内......不过只是保持示例简单。

4

2 回答 2

2

我刚刚想通了:

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

我刚刚脑子里放了个屁,并且正在使用 Attributes 属性而不是 GetCustomAttributes 方法。

于 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 回答