指:反射-设置返回的obj类型? 我有一个对象 Call Jobcard,它有几个属性,其中一个是另一个名为 Customer 的对象,它有自己的属性,其中一个是另一个名为 Adress 的嵌套对象。
这两个函数也将处理其他对象类型。
private T PopulateObject<T>(T dataObj, System.Data.DataRow dataRow)
{
//Type type = dataObj.GetType();
System.Reflection.PropertyInfo[] proplist = dataObj.GetType().GetProperties();
foreach ( System.Reflection.PropertyInfo propertyitem in proplist)
{
if(propertyitem.Name != "")
//s += propertyitem.Name + ":" + (propertyitem.GetValue(dataObj,null)).ToString() + "\r\n";
try
{
propertyitem.SetValue(dataObj, dataRow[propertyitem.Name], null);
}
catch (Exception ex)
{
if (ex.Message.Contains("does not belong to table"))
{
propertyitem.SetValue(dataObj, PopulateChildObject(propertyitem, dataRow), null);
}
else
throw;
}
}
return dataObj;
}
private object PopulateChildObject(object dataObj, System.Data.DataRow dataRow)
{
System.Reflection.PropertyInfo[] proplist = dataObj.GetType().GetProperties();
foreach ( System.Reflection.PropertyInfo propertyitem in proplist)
{
if(propertyitem.Name != "")
try
{
propertyitem.SetValue(dataObj, dataRow[propertyitem.Name], null);
}
catch (Exception ex)
{
if (ex.Message.Contains("does not belong to table"))
{
propertyitem.SetValue(dataObj, PopulateChildObject(propertyitem, dataRow), null);
}
else
throw;
}
}
return dataObj;
}
问题是 PopulateChildObject 函数不起作用,因为 PropertyInfo 列表不是传递的 childObj 的列表。如果我查看手表中传递给 PopulateChildObject 的 dataObj,它有 0 个属性。此外,传递给 PopChildObj() 的 dataObj 的类型为 System.Reflection.RuntimePropertyInfo' 而不是 Customer 类型。我错过了什么?