跪求 泛型 反射问题 在线等~~~~ 本帖最后由 zhaoguangxu 于 2011-12-15 10:03:47 编辑 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 T 和 DataRow 能对应上么能的话就用反射 加上new()约束就可以new了. 深度复制, 网上好像有类库可以这样做,可以找找. /// <summary> /// 获取实体列表 /// </summary> public static List<T> List<T>(T dbModel, string sql) { List<T> models = new List<T>(); Type t = typeof(T); PropertyInfo[] pros = t.GetProperties(); using (SqlConnection connection = new SqlConnection(connectionString)) { try { if (connection.State != ConnectionState.Open) { connection.Open(); } using (SqlDataAdapter da = new SqlDataAdapter(sql, connection)) { DataSet ds = new DataSet(); da.Fill(ds, "ds"); if (ds.Tables.Count > 0) { if (ds.Tables[0].Rows.Count > 0) { foreach (DataRow dr in ds.Tables[0].Rows) { Hashtable ht = new Hashtable(); foreach (DataColumn dc in ds.Tables[0].Columns) { ht.Add(dc.ColumnName, dr[dc]); } foreach (PropertyInfo pro in pros) { if (ht.Contains(pro.Name)) { if ((Object.Equals(ht[pro.Name], null)) || (Object.Equals(ht[pro.Name], System.DBNull.Value))) { pro.SetValue(dbModel, null, null); } else { pro.SetValue(dbModel, ht[pro.Name], null); } } } models.Add(dbModel); } } } } } catch (System.Data.SqlClient.SqlException e) { throw e; } catch (Exception ex) { throw ex; } } return models; }对的上~~~ public static List<T> List<T>(T model, DataTable dt) where T : new(){... 不针对你的实现说的添加接口I实现深表复制,由各个可能传入的参数继承并实现T加约束I和NEW() 如何读取propertygrid中具体属性的值 不用控件做数据库级联 文件的完整度 C#基于桌面COMBOBOX操作问题 关于XML文件的大小 .net读取access数据库的问题!就这摸点分了不好意思了! 邮箱代理服务器及域名 求教一个关于C#的问题 急急急,在线等,高手请进,来者有分 高手请进!如何用C#实现数据库的备份? 如何让序列化和反序列化支持ReadOnly属性为true的控件 问一个奇怪的问题,为什么不能转换,速结
/// 获取实体列表
/// </summary>
public static List<T> List<T>(T dbModel, string sql)
{
List<T> models = new List<T>();
Type t = typeof(T);
PropertyInfo[] pros = t.GetProperties(); using (SqlConnection connection = new SqlConnection(connectionString))
{
try
{
if (connection.State != ConnectionState.Open)
{
connection.Open();
} using (SqlDataAdapter da = new SqlDataAdapter(sql, connection))
{
DataSet ds = new DataSet();
da.Fill(ds, "ds");
if (ds.Tables.Count > 0)
{
if (ds.Tables[0].Rows.Count > 0)
{
foreach (DataRow dr in ds.Tables[0].Rows)
{
Hashtable ht = new Hashtable();
foreach (DataColumn dc in ds.Tables[0].Columns)
{
ht.Add(dc.ColumnName, dr[dc]);
}
foreach (PropertyInfo pro in pros)
{
if (ht.Contains(pro.Name))
{
if ((Object.Equals(ht[pro.Name], null)) || (Object.Equals(ht[pro.Name], System.DBNull.Value)))
{
pro.SetValue(dbModel, null, null);
}
else
{
pro.SetValue(dbModel, ht[pro.Name], null);
}
}
}
models.Add(dbModel);
}
}
}
}
}
catch (System.Data.SqlClient.SqlException e)
{
throw e;
}
catch (Exception ex)
{
throw ex;
}
}
return models;
}
对的上~~~
public static List<T> List<T>(T model, DataTable dt) where T : new()
{
...
添加接口I实现深表复制,由各个可能传入的参数继承并实现
T加约束I和NEW()