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



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

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 方法。

相关内容

  • 没有找到相关文章

最新更新