using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data.SqlClient;
using System.Reflection;
using System.Data;
namespace NetSolDAL
{
public class clsDTOMapper
{
/// <summary>
/// DTO Type T List
/// </summary>
/// <param name="ds"></param>
/// <returns>List<T></returns>
public static List<T> DTOList<T>(SqlDataReader dr)
{
List<T> objList = new
List<T>();
T
obj = default(T);
try
{
if (dr.HasRows)
{
while (dr.Read())
{
obj = Activator.CreateInstance<T>();
List<string> listColumn =
dr.GetSchemaTable().AsEnumerable().Select(f => f[0].ToString()).ToList();
PropertyInfo[] propinfo = obj.GetType().GetProperties();
foreach (string column in listColumn)
{
PropertyInfo prop =
obj.GetType().GetProperty(column);
if (prop != null)
{
//if (prop.Name != "IDType" && prop.Name
!= "IDNumber")
if (prop.PropertyType.Name !=
dr[prop.Name].GetType().Name && prop.PropertyType.Name.ToLower() == "string")
{
prop.SetValue(obj, Convert.ToString(dr[prop.Name]),
null);
}
else
{
if (!string.IsNullOrWhiteSpace(dr[prop.Name].ToString()))
prop.SetValue(obj, dr[prop.Name], null);
}
}
}
objList.Add(obj);
}
dr.NextResult();
}
}
catch (Exception
ex)
{
throw ex;
}
return objList;
}
/// <summary>
/// DTO Type T List
/// </summary>
/// <param name="ds"></param>
/// <returns>List<T></returns>
public static List<T> DTOListTypes<T>(SqlDataReader dr)
{
List<T> objList = new
List<T>();
T
obj = default(T);
try
{
if (dr.HasRows)
{
while (dr.Read())
{
obj = Activator.CreateInstance<T>();
List<string> listColumn =
dr.GetSchemaTable().AsEnumerable().Select(f => f[0].ToString()).ToList();
PropertyInfo[] propinfo = obj.GetType().GetProperties();
foreach (string column in listColumn)
{
PropertyInfo prop =
obj.GetType().GetProperty(column);
if (prop != null)
{
//if (prop.Name != "IDType" && prop.Name
!= "IDNumber")
if (prop.PropertyType.Name !=
dr[prop.Name].GetType().Name && prop.PropertyType.Name.ToLower() == "string")
{
prop.SetValue(obj, Convert.ToString(dr[prop.Name]),
null);
}
else
{
if (!string.IsNullOrWhiteSpace(dr[prop.Name].ToString()))
prop.SetValue(obj, dr[prop.Name], null);
}
}
}
objList.Add(obj);
}
dr.NextResult();
}
}
catch (Exception ex)
{
throw ex;
}
return objList;
}
/// <summary>
/// DTO type T
/// </summary>
/// <param name="ds"></param>
/// <returns>Object T</returns>
public static T
DTOObject<T>(SqlDataReader dr)
{
T
obj = default(T);
try
{
if (dr.HasRows)
{
while (dr.Read())
{
obj = Activator.CreateInstance<T>();
List<string> listColumn =
dr.GetSchemaTable().AsEnumerable().Select(f => f[0].ToString()).ToList();
PropertyInfo[] propinfo = obj.GetType().GetProperties();
foreach (string column in listColumn)
{
PropertyInfo prop =
obj.GetType().GetProperty(column);
if (prop != null)
{
if (prop.PropertyType != dr[prop.Name].GetType())
{
if (prop.PropertyType == typeof(string))
prop.SetValue(obj, Convert.ToString(dr[prop.Name]),
null);
if (prop.PropertyType == typeof(Int32))
if (dr[prop.Name].GetType() != typeof(DBNull))
prop.SetValue(obj,
Convert.ToInt32(dr[prop.Name]), null);
}
else
{
prop.SetValue(obj, dr[prop.Name], null);
}
}
}
}
dr.NextResult();
}
}
catch (Exception
ex)
{
throw ex;
}
return obj != null ?
obj : Activator.CreateInstance<T>();
}
}
}
No comments:
Post a Comment