如何在 C# 中访问子对象属性值

How to access subObject properties values in 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:对象与目标类型不匹配。

当调用 subParameter.GetValue(parameter) 时,您传递的是 PropertyInfo,而您似乎想将 属性 的值传递给 initParameters

因此您应该将 parameter.GetValue(initParameters) 传递给 subParameter.GetValue()