发布网友 发布时间:2022-04-08 03:56
共2个回答
懂视网 时间:2022-04-08 08:17
SqlConnection con = new SqlConnection(ConnectString); con.Open(); SqlCommand com = new SqlCommand(sql,con); SqlDataReader reader = com.ExecuteReader(); Assembly assembly = Assembly.GetExecutingAssembly(); var type =assembly.GetType(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Namespace+"." + tablename); List<object> list = new List<object>(); while (reader.Read()) { object[] parameters= new object[1]; parameters[0] = reader; var obj = assembly.CreateInstance(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Namespace + "." + tablename, true, System.Reflection.BindingFlags.Default, null, parameters, null, null); list.Add(obj); } con.Close(); return list;
表与对应的类的名称相同,类中需要写一个构造函数,用SqlDataReader 对象初始化类的属性(其他方法也行),创建对象的时候会调用构造函数初始化对象。
用反射实现数据库读出数据转化为对应的实体list
标签:
热心网友 时间:2022-04-08 05:25
你是要List类型对象的属性还是List<T中T对象的属性,如果是前者,和一般对象的属性获取没有不同,如果是后者,方法上稍后不同,特别是当List中没有任何元素时,没法先获取一个元素来反射。