如何获取类的PropertyName?

时间:2010-04-21 05:53:01

标签: c#

如何获取类的PropertyName?

例如,如何获取Student类实例的PropertyName“StudentName”。

public class Student
{
    public string StudentName{get;set;}
}


Student student = new Student();

//I want to get the PropertyName "StudentName"
student.StudentName.GetName(); 

2 个答案:

答案 0 :(得分:2)

要获取该属性的实际名称,只需访问该类,即可使用以下命令:

Type studentType = typeof(Student);
PropertyInfo[] AllStudentProperties = studentType.GetProperties();

如果您知道要查找的名称并且只需要访问该属性,请使用:

Type studentType = typeof(Student);
PropertyInfo StudentProperties = studentType.GetProperty("StudentName");

获得PropertyInfo后,只需使用PropertyInfo.Name,即可提供字符串表示。

如果在此之后你没有价值,那么你将需要一个实例化的类来获取值。除此之外,如果使用static属性,则可以在不实例化的情况下提取值。

答案 1 :(得分:2)

更新回答:

C#现在有一个nameof运算符,所以你应该使用它。

您可以在实例或学生类型本身上使用它。

示例:

nameof(student.StudentName); // returns "StudentName"
nameof(Student.StudentName); // returns "StudentName"

原始答案(在nameof之前编写):

您可以使用以下静态方法:

static string GetName<T>(T item) where T : class
{
    var properties = typeof(T).GetProperties();
    return properties[0].Name;
}

像这样使用:

string name = GetName(new { student.StudentName });

有关详细信息,请参阅this question