ConvertUtil
using System;
using System.Data;
using System.Collections;
using System.Reflection;
namespace SysUtility.Utils
{
/// <summary>
/// ConvertUtil 的摘要说明。
/// </summary>
public class ConvertUtil
{
#region Constructors
private static IController adminHelper;
/// <summary>
/// 构造函数,初始化ConvertUtil类的新实例。
/// </summary>
static ConvertUtil()
{
adminHelper = new RMController();
}
#endregion
/// <summary>
/// 把目标的所有属性转换成Hashtable的形式
/// </summary>
/// <param name="target">目标对象</param>
/// <returns>属性的Hashtable形式</returns>
/// <remarks>
/// 使用反射实现,需要正确使用
/// </remarks>
public static Hashtable FillCollection(object target)
{
Hashtable result = new Hashtable();
Type objType = target.GetType();
PropertyInfo[] objProperties = objType.GetProperties();
foreach ( PropertyInfo objPropertyInfo in objProperties )
{
result.Add(objPropertyInfo.Name, objPropertyInfo.GetValue(target, null));
}
return result;
}
/// <summary>
/// 把表的第一行数据导入到实体对象中
/// </summary>
/// <param name="objDataTable">表</param>
/// <param name="objResult">实体对象</param>
public static bool RowToEntity(DataTable objDataTable, EntityBase objResult)
{
if ( objDataTable != null && objDataTable.Rows.Count == 1 )
{
Type objType = objResult.GetType();
PropertyInfo[] objProperties = objType.GetProperties();
for ( int i = 0; i < objDataTable.Columns.Count; i++ )
{
foreach ( PropertyInfo objPropertyInfo in objProperties )
{
if ( objPropertyInfo.Name.Equals(objDataTable.Columns[i].ColumnName) )
{
if ( objPropertyInfo.CanWrite )
{
try
{
objPropertyInfo.SetValue(objResult, Convert.ChangeType(objDataTable.Rows[0][objPropertyInfo.Name], objPropertyInfo.PropertyType), null);
}
catch{}
}
}
}
}
return true;
}
return false;
}
/// <summary>
/// 把表的数据导入到类型为type类型的实体对象列表中
/// </summary>
/// <param name="type"></param>
/// <param name="objDataTable"></param>
/// <param name="objResult"></param>
public static bool RowsToEntity(DataTable objDataTable, ref EntityBase[] objResults)
{
if ( objDataTable != null && objDataTable.Rows.Count >= 1 && objDataTable.Rows.Count == objResults.Length )
{
Type objType = objResults[0].GetType();
PropertyInfo[] objProperties = objType.GetProperties();
for ( int rowcnt = 0 ; rowcnt < objDataTable.Rows.Count; rowcnt++ )
{
for ( int i = 0; i < objDataTable.Columns.Count; i++ )
{
foreach ( PropertyInfo objPropertyInfo in objProperties )
{
if ( objPropertyInfo.Name.Equals(objDataTable.Columns[i].ColumnName) )
{
if ( objPropertyInfo.CanWrite )
{
try
{
objPropertyInfo.SetValue(objResults[rowcnt], Convert.ChangeType(objDataTable.Rows[rowcnt][objPropertyInfo.Name], objPropertyInfo.PropertyType), null);
}
catch{}
}
}
}
}
}
return true;
}
return false;
}
/// <summary>
/// 获取一个信息类的全部内容
/// </summary>
/// <param name="entity"></param>
/// <returns>是否填充</returns>
public static bool FillEntity(EntityBase entity)
{
return ConvertUtil.RowToEntity(adminHelper.Select(entity), entity);
}
/// <summary>
/// 转换字符串为DateTime类型
/// </summary>
public static DateTime ToDateTime(string text)
{
try
{
return DateTime.Parse(text.Trim());
}
catch
{
return DateTime.Parse("1900-1-1");
}
}
/// <summary>
/// 转换字符串为DateTime类型,text为时分秒的格式
/// </summary>
public static DateTime ToTime(string text)
{
try
{
return DateTime.Parse(DateTime.Now.ToString("yyyy-MM-dd ")+text.Trim());
}
catch
{
return DateTime.Parse("1900-01-01 00:00:00");
}
}
}
}
浙公网安备 33010602011771号