让我们说我们有一个结构
Struct myStruct
{
int var1;
int var2;
string var3;
.
.
}
Run Code Online (Sandbox Code Playgroud)
是否有可能通过使用foreach迭代结构的成员?我已经阅读了一些有关反思的内容,但我不知道如何在这里应用.
结构中有大约20个变量.我试图从文件读取值并尝试将它们分配给变量,但不想调用file.ReadLine()20次.我试图通过循环访问成员变量
Jon*_*eet 35
您可以使用与正常情况相同的方式应用反射,使用Type.GetFields:
MyStruct structValue = new MyStruct(...);
foreach (var field in typeof(MyStruct).GetFields(BindingFlags.Instance |
BindingFlags.NonPublic |
BindingFlags.Public))
{
Console.WriteLine("{0} = {1}", field.Name, field.GetValue(structValue));
}
Run Code Online (Sandbox Code Playgroud)
请注意,如果结构公开属性(几乎可以肯定应该),您可以使用它Type.GetProperties来获取它们.
(正如评论中所指出的,首先这可能不是一件好事,而且一般来说我对用户定义的结构有疑问,但我认为无论如何我都会包括实际答案......)
编辑:现在看来你对设置字段感兴趣,由于值类型的工作方式稍微复杂一点(是的,这实际上不应该是一个结构.)你想要一次打包,设置值单个盒装实例,最后是unbox:
object boxed = new MyStruct();
// Call FieldInfo.SetValue(boxed, newValue) etc
MyStruct unboxed = (MyStruct) boxed;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
23625 次 |
| 最近记录: |