如何检索一个类型的所有名称';的属性作为数组

本文关键字:数组 属性 有名称 类型 检索 何检索 一个 | 更新日期: 2023-09-27 18:22:02

假设我有一个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();