获取类DisplayName属性值

Tez*_*eld 7 c# reflection

我花了最后一小时试图获取DisplayName应用于a的属性的值Class.

我觉得从方法和属性中获取属性值很简单,但我正在努力学习这门课程.

这个相对较小的问题可以帮助我吗?

以下示例:

班级

 [DisplayName("Opportunity")]
 public class Opportunity
 {
  // Code Omitted
 }
Run Code Online (Sandbox Code Playgroud)

变量

var classDisplayName = typeof(T).GetCustomAttributes(typeof(DisplayNameAttribute),true).FirstOrDefault().ToString();
Run Code Online (Sandbox Code Playgroud)

我花了很多时间在MSDN和SO上,但我想我错过了一些简单的东西.

对于未来的读者来说也是一个很好的问题

任何帮助非常感谢!

Ric*_*Ric 9

使用你的例子我得到它的工作:

 var displayName = typeof(Opportunity)
    .GetCustomAttributes(typeof(DisplayNameAttribute), true)
    .FirstOrDefault() as DisplayNameAttribute;

if (displayName != null)
    Console.WriteLine(displayName.DisplayName);
Run Code Online (Sandbox Code Playgroud)

这输出了"机会".

或者对于更通用的方式,您似乎正在这样做:

public static string GetDisplayName<T>()
{
    var displayName = typeof(T)
      .GetCustomAttributes(typeof(DisplayNameAttribute), true)
      .FirstOrDefault() as DisplayNameAttribute;

    if (displayName != null)
        return displayName.DisplayName;

     return "";
}
Run Code Online (Sandbox Code Playgroud)

用法:

string displayName = GetDisplayName<Opportunity>();
Run Code Online (Sandbox Code Playgroud)

GetCustomAttributes()返回一个object[],因此您需要在访问所需的属性值之前先应用特定的强制转换.