c# 泛型编程典型应用 ModelConvertHelper

来源:互联网 发布:容错算法 编辑:程序博客网 时间:2024/05/20 16:35

 通用类,可以把DataTable转换为任何模型。此代码为网上搜集,比较好用,所以贴出来了。

using System;using System.Collections.Generic;using System.Text;using System.Data;using System.Reflection;namespace Flexzoo.Data{    /// <summary>    /// 实体转换辅助类    /// </summary>    public class ModelConvertHelper<T> where T : new()    {        public static IList<T> ConvertToModel(DataTable dt)        {            // 定义集合            IList<T> ts = new List<T>();            // 获得此模型的类型            Type type = typeof(T);            string tempName = "";            foreach (DataRow dr in dt.Rows)            {                T t = new T();                // 获得此模型的公共属性                PropertyInfo[] propertys = t.GetType().GetProperties();                foreach (PropertyInfo pi in propertys)                {                    tempName = pi.Name;                    // 检查DataTable是否包含此列                    if (dt.Columns.Contains(tempName))                    {                        // 判断此属性是否有Setter                        if (!pi.CanWrite) continue;                        object value = dr[tempName];                        if (value != DBNull.Value)                            pi.SetValue(t, value, null);                    }                }                ts.Add(t);            }            return ts;        }    }}