如何列出类的所有变量



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

您的问题并不完全清楚。听起来您想要类的给定实例的字段值:

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

注意,fieldValuesList<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()

相关内容

  • 没有找到相关文章

最新更新