日期:2014-05-16 浏览次数:20515 次
public List<T> GetEntitiesByTable<T>(DataTable table, dynamic tagType) where T : new()
{
List<T> entities = new List<T>();
foreach (DataRow row in table.Rows)
{
T entity = new T(); //这个T类型传进来可能是dynamic,如果不给具体类型,下面的foreach就无法循环了。因此上面放了一个tagType,他是有实际值的对象,如何在这里运用。
foreach (var item in entity.GetType().GetProperties())
{
string itemValue = "";
try { itemValue = row[item.Name].ToString(); }
catch { continue; }
if (itemValue != "")
item.SetValue(entity, Convert.ChangeType(row[item.Name], item.PropertyType), null);
}
entities.Add(entity);
}
return entities;
}
dynamic dync=new User();
DataTable dt=GetDataTable();
List<dynamic> listUser=GetEntitiesByTable(dt,dync). //dync只为了提供类型用于实例化。