如何在以下代码中获取参数的属性?
public void SomeMethod([SomeAttribute] string s)
{
var someAttribute = ?
}
而且我意识到该属性通常不适合在它所在的方法中使用......只是保持示例简单。
首先你需要一个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));
我刚刚想通了:
var someAttribute = typeof(SomeClass).GetMethod("SomeMethod").GetParameters().First().GetCustomAttributes(false);
我只是脑屁,正在使用属性属性而不是 GetCustomAttributes 方法。