我正在尝试创建扩展方法来检查特定对象是否具有特定属性。
我找到了使用以下语法检查它的示例:
private static bool IsMemberTested(MemberInfo member)
{
foreach (object attribute in member.GetCustomAttributes(true))
{
if (attribute is IsTestedAttribute)
{
return true;
}
}
return false;
}
现在我正在尝试执行以下操作:
public static bool HasAttribute<T>(this T instance, Type attribute)
{
return typeof(T).GetCustomAttributes(true).Any(x => x is attribute);
}
但是我收到消息“缺少类型或命名空间‘属性’......”
我做错了什么并且与给定的示例不同/我怎样才能做到这一点?
编辑:
感谢您的提示,我现在已经设法做到了:
public static bool HasAttribute<T>(this T instance, Type attribute)
{
return typeof(T).GetCustomAttributes(attribute, true).Any();
}
检查属性是这样的:
var cc = new CustomClass();
var nullable = cc.HasAttribute(typeof(NullableAttribute));
谢谢你们的帮助。现在我有另一个问题。假设我想用属性装饰类的属性,字符串类型的属性,并想稍后检查该属性是否具有属性。由于这仅适用于类型,因此我无法将其应用于属性级别。房产检查有什么解决办法吗?