如何获取属性参数的元数据?

时间:2013-01-31 07:15:21

标签: .net reflection attributes

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

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

我意识到该属性通常不会在它所使用的方法中使用...只是保持示例简单。

2 个答案:

答案 0 :(得分:2)

我刚想通了:

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

我只是一个大脑屁并使用了Attributes属性而不是GetCustomAttributes方法。

答案 1 :(得分: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));