0

我正在尝试遍历对象属性和值并用它们构建一个字符串。问题是我似乎无法访问不是字符串的属性的值...

这是我到目前为止所拥有的:

    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:对象与目标类型不匹配。

4

1 回答 1

1

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

因此,您应该改为传递parameter.GetValue(initParameters)subParameter.GetValue()

于 2015-03-18T13:45:57.923 回答