日期:2014-05-16  浏览次数:20500 次

泛型方法动态实例化dynamic内部的对象(努力加班中,谢谢各位帮忙)

 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只为了提供类型用于实例化。


   T entity = new T(); //这个T类型传进来可能是dynamic,如果不给具体类型,下面的foreach就无法循环了。因此上面放了一个tagType,它是有实际对象,如何在这里运用。


------解决方案--------------------