如何在c#中访问subObject属性值

时间:2015-03-18 13:38:17

标签: c# reflection subobject

我试图循环一个对象属性和值,并用它们构建一个字符串。 问题是我似乎无法访问非字符串属性的值...

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

    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 个答案:

答案 0 :(得分:1)

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

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