我正在尝试将以下方法(在.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.ExtensionsSystem.Reflection.TypeExtensions的包引用,那么MemberInfo将获得许多扩展方法,例如GetCustomAttribute<T>()GetCustomAttributes<T>()GetCustomAttributes()等。您可以使用这些扩展方法。扩展方法在System.Reflection.CustomAttributeExtensions中声明,因此您需要一个using伪指令:

using System.Reflection;

在您的情况下,member.GetCustomAttribute<TAttribute>()应该可以满足您的所有需求。

09-11 17:22