您的位置:首页 > 编程语言 > C#

C# DataReader反射获取实体类(model) & 实体类反射获取Dictionary2009-09-22 15:49

2013-04-24 11:07 471 查看
public static T FillModel<T>(IDataReader dr)

{

using (dr)

{

if (dr.Read())

{

List<string> field = new List<string>(dr.FieldCount);

for (int i = 0; i < dr.FieldCount; i++)

{

field.Add(dr.GetName(i).ToLower());

}

T model = Activator.CreateInstance<T>();

foreach (PropertyInfo property in model.GetType().GetProperties(BindingFlags.GetProperty | BindingFlags.Public | BindingFlags.Instance))

{

if (field.Contains(property.Name.ToLower()) && !SqlBuilder.IsNullOrDBNull(dr[property.Name]))

{

property.SetValue(model, Convert.ChangeType(dr[property.Name], property.PropertyType), null);

}

}

return model;

}

}

return default(T);

}

public static List<T> FillModels<T>(IDataReader dr)

{

using (dr)

{

List<string> field = new List<string>(dr.FieldCount);

for (int i = 0; i < dr.FieldCount; i++)

{

field.Add(dr.GetName(i).ToLower());

}

List<T> list = new List<T>();

while (dr.Read())

{

T model = Activator.CreateInstance<T>();

foreach (PropertyInfo property in model.GetType().GetProperties(BindingFlags.GetProperty | BindingFlags.Public | BindingFlags.Instance))

{

if (field.Contains(property.Name.ToLower()) && !SqlBuilder.IsNullOrDBNull(dr[property.Name]))

{

property.SetValue(model, Convert.ChangeType(dr[property.Name], property.PropertyType), null);

}

}

list.Add(model);

}

return list;

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: