Как получить доступ к значениям свойств 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() вместо.

Другие вопросы по тегам