如何列出所有类的变量
有没有办法在C#中列出类的所有变量(字段)。 如果是,可能有人给我一些例子如何将它们保存在List
并使用Anonymous Types
(var)获取它们。
你的问题不是很清楚。 听起来你想要类的给定实例的字段值:
var fieldValues = foo.GetType() .GetFields() .Select(field => field.GetValue(foo)) .ToList();
请注意, fieldValues
是List
。 这里, 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); } }