假设我有一个Employee
类:
public class Employee
{
public string Name { get; set;}
public string Address { get; set ;
}
现在我想创建一个具有Employee
类属性名称的数组,即:
string[] employeeArray = { "Name", "Address" };
有没有一种方法可以在不硬编码属性名称的情况下实现这一点?
您可以使用反射来完成此操作,特别是使用Type.GetProperties
方法。
以下是两种可能的解决方案;一个有LINQ,另一个没有(如果你的目标是早期版本的框架):
// using System.Linq; typeof(Employee).GetProperties().Select(p => p.Name).ToArray()
// using System; Array.ConvertAll(typeof(Employee).GetProperties(), p => p.Name)
请注意,Type.GetProperties()
将只看到公共实例属性。如果您还对静态属性或非公共属性的名称感兴趣,则需要调用不同的GetProperties
重载。
typeof(Employee).GetProperties().Select(x => x.Name).ToArray();