c# - 获取类字段列表

标签 c# asp.net-mvc generic-programming

<分区>

我正在尝试为我的搜索创建一个通用方法,但我不知道如何从我的类中返回字段列表。

假设我有一个类:

public class Table
    {
        [Key]
        public int ID { get; set; }

        public string Name { get; set; }

        public string Address { get; set; }
    }

现在我想返回一个如下所示的列表:

"ID"
"Name"
"Address"

我该怎么做?

尝试过这样的事情:

 FieldInfo[] fields = typeof(T).GetFields(
            BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance);
            string[] names = Array.ConvertAll<FieldInfo, string>(fields,
                delegate(FieldInfo field) { return field.Name; });

但是它在字段名后有一些不必要的文字

编辑

它不是重复的,因为在我的情况下 GetProperties().Select(f => f.Name) 有所不同

最佳答案

你可以用反射来做到这一点:

var listOfFieldNames = typeof(Table).GetProperties().Select(f => f.Name).ToList();

请注意,您显然需要属性,而不是字段。术语“字段”指的是私有(private)(实例)成员。公共(public) getter/setter 称为属性。

关于c# - 获取类字段列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39255150/

相关文章:

c# - 如何先按一个属性排序,然后再按另一个属性排序,而不考虑第一个属性的关系?

c# - 使用一种方法运行类似的存储过程(将 StoredProcedure 名称作为方法参数传递)是否安全

asp.net - reCaptcha 验证超时异常

c++ - 使用 boost::bind 时出错

c++ - 获取 lambda 表达式的返回类型

c# - 每个应用程序 session 的 Nlog 固定文件名

C# 从 XML 中读取和存储数据

c# - ASP.NET MVC ViewModel 和 DropDownList

asp.net - 51°.mobi 的替代品?

generic-programming - 如何实现通用 Kafka Streams 反序列化器