我正在尝试将以下方法(在.NET Framework 4.6.2中可以正常工作)转换为.NET Core 1.1。
public static TAttribute GetCustomAttribute<TAttribute>(MemberInfo member) where TAttribute : Attribute
{
var attr = System.Attribute.GetCustomAttribute(member, typeof(TAttribute));
if (attr is TAttribute)
return attr;
else
return null;
}
这段代码给我错误
知道与.NET Core等效的东西是什么吗?
P.S.我尝试了以下操作,但似乎引发异常。不知道异常是什么,因为它只是一起停止了应用程序。我尝试将代码放在
try catch
块中,但它仍然停止运行,因此无法捕获异常。public static TAttribute GetCustomAttribute<TAttribute>(MemberInfo member) where TAttribute : Attribute
{
var attr = GetCustomAttribute<TAttribute>(member);
if (attr is TAttribute)
return attr;
else
return null;
}
最佳答案
如果您添加了对System.Reflection.Extensions
或System.Reflection.TypeExtensions
的包引用,那么MemberInfo
将获得许多扩展方法,例如GetCustomAttribute<T>()
,GetCustomAttributes<T>()
,GetCustomAttributes()
等。您可以使用这些扩展方法。扩展方法在System.Reflection.CustomAttributeExtensions
中声明,因此您需要一个using
伪指令:
using System.Reflection;
在您的情况下,
member.GetCustomAttribute<TAttribute>()
应该可以满足您的所有需求。