(2) EntityConvert
这个东东是模仿System.Convert的产物,刚开始没觉得咋样,用起来还真有点舍不得呢(本文开头的代码1中曾经使用过这个Utility)!
不信,且看如下代码(仅举两例J):
代码16:我变,我变,我变变变!
public static class EntityConvert
{
public static IList ToList(DbDataReader rdr, Type entity)
{
ArrayList list = new ArrayList();
using (rdr)
{
while (rdr.Read())
{
object obj = ToObject(rdr, entity, false);
if (obj != null)
list.Add(obj);
}
}
return list;
}
public static object ToObject(DbDataReader rdr,
Type entity, bool bNeedRead)
{
object obj = null;
if (!bNeedRead || rdr.Read())
{
// 创建Data Entity对象
obj = Activator.CreateInstance(entity);
// 设置Data Entity对象之字段数据
FieldInfo[] fields = entity.GetFields(
BindingFlags.Instance | BindingFlags.Public);
foreach (FieldInfo field in fields)
{
string fieldName = field.Name;
object fieldValue = rdr[fieldName];
if (fieldValue == System.DBNull.Value)
field.SetValue(obj, null);
else
field.SetValue(obj, fieldValue);
}
if (bNeedRead && !rdr.Read())
rdr.Close();
}
return obj;
}
}