C# 反射>嵌套属性 getValue >对象与目标类型不匹配
本文关键字:目标 类型 对象 不匹配 getValue 反射 嵌套 属性 | 更新日期: 2023-09-27 18:34:13
>我无法解决问题,所有值都在对象的第一级很好地恢复,但嵌套属性值生成错误。我确定我需要调整 getValue 参数对象,但我不确定如何调整。我尝试将嵌套属性信息数组,属性信息或req作为参数传递,但仍然出现相同的错误。有什么提示吗?
UpdatePhoneReq req = new UpdatePhoneReq();
foreach (PropertyInfo propertyInfo in req.GetType().GetProperties())
{
if (propertyInfo.CanRead)
{
string attributValue = "";
string attributName = propertyInfo.Name;
Type attributType = propertyInfo.PropertyType;
if (attributType == typeof(XFkType))
{
PropertyInfo[] nestedpropertyInfoArray = propertyInfo.PropertyType.GetProperties();
attributValue += "{";
foreach (PropertyInfo subProperty in nestedpropertyInfoArray)
{
// --- > the GetValue below generates the error
System.Diagnostics.Debug.WriteLine(subProperty.Name + "=" + subProperty.GetValue(req, null).ToString());
attributValue += subProperty.Name + "=" + ",";
}
attributValue = attributValue.Substring(0, attributValue.Length - 1) + "}";
}
else
attributValue = propertyInfo.GetValue(req, null) == null ? "" : propertyInfo.GetValue(req, null).ToString();
System.Diagnostics.Debug.WriteLine("[" + propertyInfo.PropertyType + "]" + attributName + "=" + attributValue);
}
}
您正在传递父对象"req"以获取子属性的值,您需要首先找到属性的值并传递它以获取子属性的值。
var propertyInfoValue = propertyInfo.GetValue(req, null);
然后将此propertyInfoValue
用于subProperty
。
subProperty.GetValue(propertyInfoValue , null)