如何在 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()
。
我正在尝试遍历一个对象的属性和值并用它们构建一个字符串。 问题是我似乎无法访问非字符串属性的值...
这是我目前的情况:
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()
。