Как получить доступ к значениям свойств subObject в C#
Я пытаюсь перебрать свойства объекта и значения и построить строку с ними. Проблема в том, что я не могу получить доступ к значениям свойств, которые не являются строковыми...
Вот что у меня есть:
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: объект не соответствует типу цели.
1 ответ
Решение
При звонке subParameter.GetValue(parameter)
Вы проходите PropertyInfo
в то время как вы, казалось бы, хотите передать значение этого свойства для initParameters
вместо.
Вы должны таким образом пройти parameter.GetValue(initParameters)
в subParameter.GetValue()
вместо.