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