获取类的变量列表[重复]
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 中更可取。 单。 方式。实际上,age
和 BirthDate
无论如何都是多余的......(一个暗示另一个)
@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
而不是properties
和GetType
是object
的一个方法。
只做foo.GetType()
会抛出错误。
【讨论】:
为什么new
作为代码中的第一个单词?
@gunr2171,抱歉错过了()
我正在使用new
运算符创建foo
的对象以上是关于获取类的变量列表[重复]的主要内容,如果未能解决你的问题,请参考以下文章