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
  • 相关阅读:
    pytorch之dataloader深入剖析
    Pytorch多GPU并行处理
    鸡汤:做灯泡的
    数据工程师
    软实力
    七拼八凑的读书感
    深入一点儿
    Session的生命周期
    cloudera项目源代码
    Storm实时计算系统
  • 原文地址:https://www.cnblogs.com/yonsy/p/4385938.html
Copyright © 2011-2022 走看看