Как получить доступ к значениям свойств subObject в С#

112
9

Я пытаюсь перебрать свойства объекта и значения и построить с ними строку. Проблема в том, что я не могу получить доступ к значениям свойств, которые не являются строковыми...

Вот что я до сих пор:

    private string ObjectToStringArray(CustomType initParameters)
{
var stringArray = "";

foreach (var parameter in initParameters.GetType().GetProperties())
{
if (parameter.PropertyType.Name == "String")
stringArray += "\"" + parameter.Name + "\" => \"" + parameter.GetValue(initParameters) + "\",\r\n";
else
{
stringArray += "array(\r\n";
foreach (var subParameter in parameter.PropertyType.GetProperties())
{
stringArray += "\"" + subParameter.Name + "\" => \"" + subParameter.GetValue(parameter) + "\",\r\n";
}
stringArray += "),";
}
}

return stringArray;
}

я могу получить значения всех свойств строки, но один уровень вниз, я просто не могу извлечь сам объект свойства.

Мое исключение: System.Reflection.TargetException: Object не соответствует типу цели.

спросил(а) 2021-01-28T00:46:33+03:00 4 недели, 1 день назад
1
Решение
61

При вызове subParameter.GetValue(parameter) вы передаете PropertyInfo, тогда как вы, похоже, хотите передать значение этого свойства для initParameters.

Таким образом, вы должны передать parameter.GetValue(initParameters) subParameter.GetValue() вместо subParameter.GetValue().

ответил(а) 2021-01-28T00:46:33+03:00 4 недели, 1 день назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема