относится к: Отражение - настройка Тип возвращаемого объекта?
У меня есть объект Call Jobcard с несколькими свойствами, одним из которых является другой объект с именем Customer со своими собственными свойствами, одним из которых является другой вложенный объект с именем Adress.
Эти 2 функции будут обрабатывать и другие типы объектов.
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.
Если я посмотрю на dataObj, переданный в PopulateChildObject в часы, он имеет 0 атрибутов. Также dataObj, переданный в PopChildObj (), имеет тип System.Reflection.RuntimePropertyInfo 'вместо типа Customer. Чего мне не хватает?