如何将类型属性的所有名称检索为数组?

时间:2014-09-16 19:57:44

标签: c# .net reflection properties

假设我有一个Employee类:

public class Employee
{
    public string Name    { get; set;}
    public string Address { get; set ;
}

现在我想创建一个具有Employee类'属性名的数组,即:

string[] employeeArray = { "Name", "Address" };

有没有办法在没有硬编码属性名的情况下实现这一目标?

2 个答案:

答案 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();