获取类的变量列表[重复]

Posted

技术标签:

【中文标题】获取类的变量列表[重复]【英文标题】:Get variable list of a class [duplicate] 【发布时间】:2014-06-14 00:52:24 【问题描述】:
Class foo

   public string name;
   public int age;
   public datetime BirthDate;

我有上面的课程。

我想要 foo 类的变量列表。

我试过了

foo fooObj= new foo();
fooObj.GetType().GetProperties()

这返回了 0 个属性。

显然这不起作用,因为类 foo 中没有属性。

【问题讨论】:

这些是字段,不是属性 在大多数情况下,反射是错误的工具,为什么你需要以这种方式获取属性/字段? 你得到了Fields,没有Properties 顺便说一句:为什么不是这些属性? public string Name get;set;every 中更可取。 方式。实际上,ageBirthDate 无论如何都是多余的......(一个暗示另一个) @MARKANDBhatt: string fooName = foo.Name;(你也应该关注.NET naming conventions) 【参考方案1】:

您的班级有字段,而不是属性。属性具有 getter 和 setter 方法,而字段仅存储数据。

试试

typeof(foo).GetFields()

或将您的字段更改为属性:

Class foo

   public string name get; set;
   public int age get; set;
   public datetime BirthDate get; set;

或者,要获取字段属性,请使用:

typeof(foo).GetMembers()
           .Where(mi => mi.MemberType == MemberTypes.Field || 
                        mi.MemberType == MemberTypes.Property);

【讨论】:

【参考方案2】:

你试过这个吗:

new foo().GetType().GetFields()

那些是fields 而不是propertiesGetTypeobject 的一个方法。

只做foo.GetType() 会抛出错误。

【讨论】:

为什么new 作为代码中的第一个单词? @gunr2171,抱歉错过了() 我正在使用new 运算符创建foo 的对象

以上是关于获取类的变量列表[重复]的主要内容,如果未能解决你的问题,请参考以下文章

获取两个日期时间变量之间的小时列表 [重复]

公共属性列表及其值[重复]

获取与python中的对象对应的所有可能变量名的列表[重复]

聚合类相对于常规类的优势[重复]

在C#中获取命名空间中的类列表[重复]

获取类型并将第二个变量转换为该类型[重复]