有没有一种方法可以列出C#中一个类的所有变量(字段(。如果是的话,有人能给我一些例子吗?如何将它们保存在List
中,并使用Anonymous Types
(var(获取它们。
您的问题并不完全清楚。听起来您想要类的给定实例的字段值:
var fieldValues = foo.GetType()
.GetFields()
.Select(field => field.GetValue(foo))
.ToList();
注意,fieldValues
是List<object>
。这里,foo
是您的类的一个现有实例。
如果您想要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
是你班的名字。
这将列出类中所有字段的名称(公共和非公共,静态和实例字段(:
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);
}
}
var fields = yourClass.GetType().GetProperties().Select(x => x.Name).ToList()