有没有办法在C#中列出类的所有变量(字段).如果是,可能有人给我一些例子如何将它们保存在一个List并获得它们可能使用Anonymous Types(var).
jas*_*son 52
你的问题不是很清楚.听起来你想要类的给定实例的字段值:
var fieldValues = foo.GetType()
.GetFields()
.Select(field => field.GetValue(foo))
.ToList();
Run Code Online (Sandbox Code Playgroud)
需要注意的是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();
Run Code Online (Sandbox Code Playgroud)
如果你只想要这些名字:
var fieldNames = typeof(Foo).GetFields()
.Select(field => field.Name)
.ToList();
Run Code Online (Sandbox Code Playgroud)
这Foo是您班级的名称.
Fre*_*örk 10
这将列出类中所有字段的名称(公共和非公共字段,包括静态字段和实例字段):
BindingFlags bindingFlags = BindingFlags.Public |
BindingFlags.NonPublic |
BindingFlags.Instance |
BindingFlags.Static;
foreach (FieldInfo field in typeof(TheClass).GetFields(bindingFlags))
{
Console.WriteLine(field.Name);
}
Run Code Online (Sandbox Code Playgroud)
如果您想基于某个对象实例获取字段,请GetType改用:
foreach (FieldInfo field in theObject.GetType().GetFields(bindingFlags))
{
Console.WriteLine(field.Name);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
66351 次 |
| 最近记录: |