如何获取以下代码中参数的属性?
public void SomeMethod([SomeAttribute] string s)
{
var someAttribute = ?
}
我意识到该属性通常不会在它所使用的方法中使用...只是保持示例简单。
答案 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));