zoukankan      html  css  js  c++  java
  • asp.net DataReader DataTable 使用反射给给实体赋值

    asp.net 使用反射给给实体赋值 

     实体类继承此基类

    using System.Reflection;
    using System.Data.SqlClient;
    using System.Data;
    namespace Model
    {
        public class Base
        {
            protected bool isNull = true;
            public bool IsNull
            {
                get { return isNull; }
                set { isNull = value; }
            }
            protected void SetValue(object info)
            {
                foreach (FieldInfo fi in info.GetType().GetFields(BindingFlags.NonPublic | BindingFlags.Instance))
                {
                    fi.SetValue(this, fi.GetValue(info));
                }
            }
            public void SetValue(SqlDataReader dr)
            {
                if (dr.Read())
                {
                    foreach (FieldInfo fi in this.GetType().GetFields(BindingFlags.NonPublic | BindingFlags.Instance))
                    {
                        if (fi.Name != "isNull")
                        {
                            fi.SetValue(this, dr[fi.Name]);
                        }
                    }
                    this.isNull = false;
                }
                dr.Close();
            }
    
            public void SetValue(DataTable dt)
            {
                if (dt != null && dt.Rows.Count > 0)
                {     
                    foreach (DataRow row in dt.Rows)
                    {
                        foreach (DataColumn column in dt.Columns)
                        {
                            FieldInfo fi = this.GetType().GetField(column.ColumnName);
                            if (fi.Name != "isNull")
                            {
                                fi.SetValue(this, row[fi.Name]);
                            }
                        } 
                    } 
                }
            }
    
        }
    }
    View Code

     实体类

    namespace Model
    {
        public class Users: Base
        {
            protected String userid;
            public String UserId
            {
                get { return userid; }
                set { userid= value; }
            }
            protected String username;
            public String UserName
            {
                get { return username; }
                set { username= value; }
            }
        }
    }
    View Code

    给实体类赋值

      public Users Get(String username)
            {
                Users info = new Users ();
                SqlParameter[] paras ={
                               new SqlParameter("@username",SqlDbType.NVarChar)
                                };
                paras[0].Value = username;
                SqlDataReader dr = DbHelper.ExecuteReader(CommandType.StoredProcedure, "GetUsersByUserName", paras);
                info.SetValue(dr);
                return info;
            }
    View Code
  • 相关阅读:
    AX2009直接交运的bug
    数据库日志
    新蛋中国最新的分类导航,右侧展开菜单,可以修改向左或者向右展开
    用图片代替滚动条的代码
    新蛋网的大图展示效果,缩略图点击显示大图,上一个下一个
    Banner 切换,大小图不同,支持FF和OPERA,IE系列
    下拉菜单,支持所有浏览器
    电容选型
    000.数字电子技术分类
    Altium design16设计技巧
  • 原文地址:https://www.cnblogs.com/yonsy/p/4385938.html
Copyright © 2011-2022 走看看