假设我有一个Employee
类:
public class Employee
{
public string Name { get; set;}
public string Address { get; set ;
}
现在我想创建一个具有Employee
类'属性名的数组,即:
string[] employeeArray = { "Name", "Address" };
有没有办法在没有硬编码属性名的情况下实现这一目标?
答案 0 :(得分:8)
您可以使用反射执行此操作,尤其是使用Type.GetProperties
method。
这是两种可能的解决方案;一个使用LINQ,另一个没有(如果你的目标是早期版本的框架):
// using System.Linq;
typeof(Employee).GetProperties().Select(p => p.Name).ToArray()
// using System;
Array.ConvertAll(typeof(Employee).GetProperties(), p => p.Name)
请注意,Type.GetProperties()
只会看到公共实例属性。如果您对静态属性或非公共属性的名称也感兴趣,则需要致电a different overload of GetProperties
。
答案 1 :(得分:2)
typeof(Employee).GetProperties().Select(x => x.Name).ToArray();