如何列出所有类的变量

有没有办法在C#中列出类的所有变量(字段)。 如果是,可能有人给我一些例子如何将它们保存在List并使用Anonymous Types (var)获取它们。

你的问题不是很清楚。 听起来你想要类的给定实例的字段值:

 var fieldValues = foo.GetType() .GetFields() .Select(field => field.GetValue(foo)) .ToList(); 

请注意, fieldValuesList 。 这里, foo是您class级的现有实例。

如果您想要public和非public字段,则需要通过更改绑定标志

 var bindingFlags = BindingFlags.Instance | BindingFlags.NonPublic | BindingFlags.Public; var fieldValues = foo.GetType() .GetFields(bindingFlags) .Select(field => field.GetValue(foo)) .ToList(); 

如果你只想要这些名字:

 var fieldNames = typeof(Foo).GetFields() .Select(field => field.Name) .ToList(); 

在这里, Foo是你class级的名字。

这将列出类中所有字段的名称(公共和非公共字段,包括静态字段和实例字段):

 BindingFlags bindingFlags = BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.Static; foreach (FieldInfo field in typeof(TheClass).GetFields(bindingFlags)) { Console.WriteLine(field.Name); } 

如果要基于某个对象实例获取字段,请改用GetType

 foreach (FieldInfo field in theObject.GetType().GetFields(bindingFlags)) { Console.WriteLine(field.Name); } 
 myClass.GetType().GetProperties() 
 var fields = whateverYourClassType.GetType().GetFields().Select(f => f.Name).ToList(); 

问题不完全 – 但是这里是如何从名为“inv”的对象中获取Decimal类型的所有属性的值:

 var properties = inv.GetType().GetProperties(); foreach (var prop in properties) { if (prop.ToString().ToLower().Contains("decimal")) { totalDecimal += (Decimal)prop.GetValue(inv, null); } }