我有以下内容:
[Serializable()]
public struct ModuleStruct {
public string moduleId;
public bool isActive;
public bool hasFrenchVersion;
public string titleEn;
public string titleFr;
public string descriptionEn;
public string descriptionFr;
public bool isLoaded;
public List<SectionStruct> sections;
public List<QuestionStruct> questions;
}
我创建了一个实例并填充它(内容与问题无关)。我有一个函数,它将实例化的对象作为一个参数,我们将其称为模块,并将该对象的类型作为另一个参数:module.GetType()
.
然后,此函数将使用反射,并且:
FieldInfo[] fields = StructType.GetFields();
string fieldName = string.Empty;
函数中的参数名称是Struct
和StructType
。
我遍历 中的字段名称Struct
,提取不同字段的值 和 并对其进行处理。一切都很好,直到我到达:
public List<SectionStruct> sections;
public List<QuestionStruct> questions;
该函数只知道Struct
by的类型StructType
。在VB中,代码很简单:
Dim fieldValue = Nothing
fieldValue = fields(8).GetValue(Struct)
接着:
fieldValue(0)
获取列表部分中的第一个元素;但是,在 C# 中,相同的代码不起作用,因为fieldValue
它是一个对象,而我不能fieldValue[0]
对一个对象执行此操作。
那么,我的问题是,该函数只知道Struct
by的类型StructType
,如果可能的话,我如何在 C# 中复制 VB 行为?