如何获取类的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();
答案 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。