是指:Reflection - setting Type of returned obj? 我有一个对象调用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类型。我错过了什么?
(回复评论) – 2009-05-26 10:57:16