Редактировать после редактирования : обратите внимание, что у вас есть объекты отражения, а не объекты или значения, связанные с вашим собственным классом.Другими словами, эти FieldInfo
объекты, которые у вас есть, являются общими для всех экземпляров вашего класса.Единственный способ получить доступ к строковым массивам - использовать эти FieldInfo
объекты, чтобы получить значение поля определенного экземпляра вашего класса.
Для этого вы используете FieldInfo.GetValue .Он возвращает значение поля в виде объекта.
Поскольку вы уже знаете, что они являются строковыми массивами, это упрощает вещи:
Если поля статические, передайте null
для obj
параметр ниже.
foreach (var fi in fields)
{
string[] arr = (string[])fi.GetValue(obj);
... process array as normal here
}
Если вы хотите, чтобы обрабатывались только поля со строковыми массивами:
foreach (var fi in fields)
{
if (fi.FieldType == typeof(string[]))
{
string[] arr = (string[])fi.GetValue(obj);
... process array as normal here
}
}