【发布时间】:2020-03-31 00:49:13
【问题描述】:
在 C# 中,我有一个包含许多字段的结构,例如一种叫做“钥匙”。我正在阅读一个 .ini 设置文件,其中包含所有结构字段的值。有没有办法在读取过程中使用字段名称作为字符串(如下面的 myField 字符串数组)来寻址结构字段(见下文)?这将允许我在基于字符串数组的循环中迭代读取许多字段。
private struct Foo {
public string key;
...
}
private Foo FooInstance;
string inStr;
string[] myFields[] = new string[10]{ ("key", "nextKey", ... );
for (int i=0;i<myFields.Length;i++) {
GetPrivateProfileString(section,myFields[i],"",inStr,255,file);
[convert myField[i] to the relevant Foo.key field] = inStr;
}
【问题讨论】:
-
“我有一个包含很多字段的结构” - 实际上不建议使结构超过 16 个字节
-
您在重新发明
config文件吗?为什么不是 JSON 和 newtonsoft,它们会为你序列化/反序列化? -
这是一种糟糕的编码实践。在这种情况下,您确实应该至少将数据存储在 Dictionary 中。您标记为最佳的答案在技术上是正确的,但解决您的问题的方法非常糟糕。非必要时应避免反射