我正在尝试检查属性是否具有属性。过去,这是通过以下方式完成的:
Attribute.IsDefined(propertyInfo, typeof(AttributeClass));
但是,我收到一条警告,说它在DNX Core 5.0中不可用(在DNX 4.5.1中仍然可用)。
它尚未被实现,还是像其他类型/反射相关的东西一样被移动?
我正在使用beta7。
最佳答案
编辑:
实际上, IsDefined
包中似乎有一个System.Reflection.Extensions
扩展方法。用法:
var defined = propertyInfo.IsDefined(typeof(AttributeClass));
您需要包括
System.Reflection
命名空间。引用源代码可以在here中找到。除了MemberInfo
之外,它也适用于Assembly
,Module
和ParameterInfo
。与使用
GetCustomAttribute
相比,这是possibly faster。原始帖子:
看起来它尚未移植到.NET Core。同时,您可以使用
GetCustomAttribute
来确定是否在属性上设置了属性:bool defined = propertyInfo.GetCustomAttribute(typeof(AttributeClass)) != null;
您可以将其烘焙为扩展方法:
public static class MemberInfoExtensions
{
public static bool IsAttributeDefined<TAttribute>(this MemberInfo memberInfo)
{
return memberInfo.IsAttributeDefined(typeof(TAttribute));
}
public static bool IsAttributeDefined(this MemberInfo memberInfo, Type attributeType)
{
return memberInfo.GetCustomAttribute(attributeType) != null;
}
}
并像这样使用它:
bool defined = propertyInfo.IsAttributeDefined<AttributeClass>();
关于c# - DNX Core 5.0中Attribute.IsDefined放在哪里?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32860947/