BaoKai_202508-Wms-Jingwang..../WMS.Common/MelCtData.cs
2025-08-24 09:35:55 +08:00

76 lines
2.2 KiB
C#

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using System.Reflection;
namespace WMS.Common
{
/// <summary>
/// 实体类与datatable的转换
/// </summary>
public class MelCtData
{
private static MelCtData melctData;
private static object _lock = new object();
#region Singleton模式返回当前实例
/// <summary>
/// 通过Singleton模式返回当前实例
/// </summary>
public static MelCtData Instance
{
get
{
if (melctData == null)
{
lock (_lock)
{
if (melctData == null)
{
melctData = new MelCtData();
}
}
}
return melctData;
}
}
#endregion
/// <summary>
/// 返回datatable相对应的model类
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="table"></param>
/// <returns></returns>
public T FillModel<T>(DataTable table)
{
T modelClass = default(T);//关于default为T类型的modelClass赋默认值
modelClass = Activator.CreateInstance<T>();
foreach (DataRow row in table.Rows)
{
foreach (DataColumn column in table.Columns)
{
PropertyInfo pi = modelClass.GetType().GetProperty(column.ColumnName);
if (pi != null)
{
if (pi.Name.ToLower() == column.ColumnName.ToLower())
{
if (row[column.ColumnName] != DBNull.Value)
pi.SetValue(modelClass, row[column.ColumnName.ToLower()].ToString(), null);
else
pi.SetValue(modelClass, null, null);
}
}
}
}
return modelClass;
}
}
}