通过实体对像动态生成SQL语句

using System;
using System.Data;
using System.Configuration;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using System.Reflection;
using System.Text;
using Microsoft.CSharp;
using System.CodeDom.Compiler;
using WebApplication1;

/// <summary>
/// Summary description for Public_Interface_Function
/// </summary>
public class Public_Interface_Function
{
    public MYSQL_SQLDB Mysql_DB = new MYSQL_SQLDB();
    /// <summary>
    /// SQL 语句字符文本;
    /// </summary>
    public String SQL_Str = "";
    /// <summary>
    /// 表名称公用变量
    /// </summary>
    public String Table_Name = "";
    /// <summary>
    /// 控件标签
    /// </summary>
    public String Controls_Label = "";
    /// <summary>
    /// 对象属性标签
    /// </summary>
    public String Property_Label = "";
    /// <summary>
    /// 对象字段标签
    /// </summary>
    public String Fields_Label = "";
    /// <summary>
    /// 控件前缀变量
    /// </summary>
    public String Controls_Prefix = "";
    /// <summary>
    /// 对象属性前缀变量
    /// </summary>
    public String Property_Prefix = "";
    /// <summary>
    /// 对象字段前缀变量
    /// </summary>
    public String Fields_Prefix = "";
    /// <summary>
    /// 类名称前缀变量
    /// </summary>
    public String Class_Name_Prefix = "";
    /// <summary>
    /// 前缀变量
    /// </summary>
    public String Common_Prefix = "";
    /// <summary>
    /// SQL预留部分字段字符串
    /// </summary>
    public String SQL_Paras = "";
    /// <summary>
    /// 用户ID
    /// </summary>
    public String User_ID = "";
    /// <summary>
    /// 用户部门名称
    /// </summary>
    public String User_Depart_Name = "";
    /// <summary>
    /// 用户部门ID
    /// </summary>
    public String User_Depart_ID = "";
    /// <summary>
    /// 用户部门编号
    /// </summary>
    public String User_CoCode = "";
    /// <summary>
    /// 部门班次
    /// </summary>
    public String User_ShiftID = "";
    /// <summary>
    /// 用户权限名称
    /// </summary>
    public String USer_Grant_Name = "";
    /// <summary>
    /// 用户权限ID
    /// </summary>
    public String User_Grant_ID = "";
    /// <summary>
    /// 用户添加权限
    /// </summary>
    public String User_Allowadd = "";
    /// <summary>
    /// 用户编辑权限
    /// </summary>
    public String User_Allowedit = "";
    /// <summary>
    /// 用户权限扩展
    /// </summary>
    public String User_Allowexp = "";
    /// <summary>
    /// 用户状态
    /// </summary>
    public String User_Status = "";
    /// <summary>
    /// 用户岗位编号
    /// </summary>
    public String User_GroupID = "";


 public Public_Interface_Function()
 {
  //
  // TODO: Add constructor logic here
  //
 }
    /// <summary>
    /// 泛型获取SQL  INSERT字符串
    /// </summary>
    /// <typeparam name="T">对象类型</typeparam>
    /// <param name="md">对象类型参数</param>
    /// <returns>返回SQL INSERT语句;调用方法:  </returns>
    public String SQLSTR_INSERT_Builder<T>(T md)
    {
        String SQL_STR_INSERT_HEADER = "insert  into mytablename(";
        string SQL_STR_INSERT_FIELDS = "";
        string SQL_STR_INSERT_VALUES = "";
        string SQL_STR = "NULL";
        Type type = md.GetType();
        String str = type.Name.ToString();
        if (Table_Name.ToString().Trim().Length < 2)
        {
            String[] myarr;
            myarr = str.Split('_');
            Table_Name = myarr[myarr.Length - 1].ToString();
        }
       
        Common_Prefix=Table_Name+"_";
        SQL_STR_INSERT_HEADER = SQL_STR_INSERT_HEADER.Replace("mytablename", Table_Name.ToString());

        object obj = Activator.CreateInstance(type);
        PropertyInfo[] props = type.GetProperties(BindingFlags.Public | BindingFlags.Instance);
        foreach (PropertyInfo p in props)
        {
            if (p.GetValue(md, null).ToString().Trim().Length > 0)
            {
                SQL_STR_INSERT_FIELDS = SQL_STR_INSERT_FIELDS + p.Name.ToString().Replace(Common_Prefix.ToString(),"") + ",";
                SQL_STR_INSERT_VALUES = SQL_STR_INSERT_VALUES + "', '" + p.GetValue(md, null).ToString();
            }

        }
        if (SQL_STR_INSERT_FIELDS.ToString().Trim().Length > 3)
        {
            SQL_STR = SQL_STR_INSERT_HEADER + SQL_STR_INSERT_FIELDS.Substring(0, SQL_STR_INSERT_FIELDS.Length - 1) + ")values(" + SQL_STR_INSERT_VALUES.Substring(2, SQL_STR_INSERT_VALUES.Length - 2) + "')";
        }
        return SQL_STR;
    }
    /// <summary>
    /// 通过泛型动态获取SQL  SELECT字符串
    /// </summary>
    /// <typeparam name="T">对象类型</typeparam>
    /// <param name="md">对象类型实例</param>
    /// <returns>返回SQL SELECT语句;调用方法: </returns>
    public String SQLSTR_SELECT_Builder<T>(T md)
    {
        String SQL_STR_INSERT_HEADER = "select  ";
        string SQL_STR_INSERT_FIELDS = "";
        string SQL_STR_INSERT_VALUES = "";
        string SQL_STR = "NULL";
        Type type = md.GetType();
        if (Table_Name.ToString().Trim().Length < 2)
        {
            String str = type.Name.ToString();
            String[] myarr;
            myarr = str.Split('_');
            Table_Name = myarr[myarr.Length - 1].ToString();
        }
        SQL_STR_INSERT_HEADER = SQL_STR_INSERT_HEADER.Replace("mytablename", Table_Name.ToString());

        object obj = Activator.CreateInstance(type);
        PropertyInfo[] props = type.GetProperties(BindingFlags.Public | BindingFlags.Instance);
       

        Common_Prefix = Table_Name + "_";
        foreach (PropertyInfo p in props)
        {
            if (p.GetValue(md, null).ToString().Trim().Length > 0)
            {
                SQL_STR_INSERT_FIELDS = SQL_STR_INSERT_FIELDS + p.Name.ToString().Replace(Common_Prefix.ToString(),"") + "  ,";
                SQL_STR_INSERT_VALUES = SQL_STR_INSERT_VALUES + p.Name.ToString().Replace(Common_Prefix.ToString(), "") + "='" + p.GetValue(md, null).ToString() + "',";
            }

        }
        if (SQL_STR_INSERT_FIELDS.ToString().Trim().Length > 3)
        {
            SQL_STR = SQL_STR_INSERT_HEADER + SQL_STR_INSERT_FIELDS.Substring(0, SQL_STR_INSERT_FIELDS.Length - 1) + "  from tablename where " + SQL_STR_INSERT_VALUES.Substring(0, SQL_STR_INSERT_VALUES.Length - 1);
        }
        return SQL_STR;
    }
    /// <summary>
    /// 通过泛型动态获取SQL  UPDATE字符串
    /// </summary>
    /// <typeparam name="T">对象类型</typeparam>
    /// <param name="md">对象类型实例</param>
    /// <param name="SQL_CASE">SQL更新条件</param>
    /// <returns>返回SQL UPDATE语句;调用方法:  </returns>
    public String SQLSTR_UPDATE_Builder<T>(T md, string SQL_CASE)
    {
        String SQL_STR_UPDATE_HEADER = "UPDATE  MYTABLENAME  SET   ";
        string SQL_STR_UPDATE_FIELDS = "";
        string SQL_STR_UPDATE_VALUES = "";
        string SQL_STR = "NULL";
        SQL_STR_UPDATE_FIELDS = SQL_CASE;
        Type type = md.GetType();
        String str = type.Name.ToString();
        if (Table_Name.ToString().Trim().Length < 2)
        {
            String[] myarr;
            myarr = str.Split('_');
            Table_Name = myarr[myarr.Length - 1].ToString();
        }


        Common_Prefix = Table_Name + "_";
        SQL_STR_UPDATE_HEADER = SQL_STR_UPDATE_HEADER.Replace("MYTABLENAME", Table_Name.ToString());

        object obj = Activator.CreateInstance(type);
        PropertyInfo[] props = type.GetProperties(BindingFlags.Public | BindingFlags.Instance);
        foreach (PropertyInfo p in props)
        {
            if (p.GetValue(md, null).ToString().Trim().Length > 0)
            {

                SQL_STR_UPDATE_VALUES = SQL_STR_UPDATE_VALUES + p.Name.ToString().Replace(Common_Prefix.ToString(), "") + "='" + p.GetValue(md, null).ToString() + "',";
            }

        }

        if (SQL_STR_UPDATE_FIELDS.ToString().Trim().Length > 3)
        {
            SQL_STR = SQL_STR_UPDATE_HEADER + SQL_STR_UPDATE_VALUES.Substring(0, SQL_STR_UPDATE_VALUES.Length - 1) + "    where " + SQL_STR_UPDATE_FIELDS.ToString();
        }
        else
        {
            SQL_STR = "";
        }
        return SQL_STR;
    }
    /// <summary>
    /// 通过DATATABLE参数为指定类型对象赋值(为指定类型对象属性赋值)
    /// </summary>
    /// <typeparam name="T">指定类型</typeparam>
    /// <param name="dt">DATATABLE参数</param>
    /// <returns>返回已经赋值的指定对象实例;调用方法: </returns>
    public T SET_Property_Value_FOR_OBJECT_BY_DT<T>(DataTable dt)
    {
        System.Type Object_Type = typeof(T);//获取指定名称的类型

        String str =typeof(T).GetType().Name.ToString();
        if (Table_Name.ToString().Trim().Length < 2)
        {
            String[] myarr;
            myarr = str.Split('_');
            Table_Name = myarr[myarr.Length - 1].ToString();
        }

        Common_Prefix = Table_Name + "_";
        object Object_Instance = Activator.CreateInstance(Object_Type, null);//创建指定类型实例
        PropertyInfo[] fields = Object_Instance.GetType().GetProperties();//获取指定对象的所有公共属性
        object obj = Activator.CreateInstance(Object_Type, null);
        if (dt.Rows.Count == 1)
        {
            foreach (DataRow dr in dt.Rows)
            {
                foreach (DataColumn dc in dt.Columns)
                {
                    foreach (PropertyInfo t in fields)
                    {
                        if (dc.ColumnName == t.Name.ToString().Replace(Common_Prefix.ToString(), ""))
                        {
                            t.SetValue(obj, dr[dc.ColumnName], null);//给对象赋值
                            continue;
                        }
                        
                    }

                }
            }

        }
        return (T)obj;
    }
    /// <summary>
    /// 通过泛型方法的DATATABLE参数  为指定类型的对象赋值(为指定类型对象属性赋值)
    /// </summary>
    /// <typeparam name="T">对象类型</typeparam>
    /// <param name="dt">数据表</param>
    /// <param name="Class_name">对象类型名称</param>
    /// <returns>返回指定类型对象;调用方法: </returns>
    public T SET_Property_Value_FOR_OBJECT_BY_ClassName_And_Dt<T>(DataTable dt, string Class_name)
    {
        System.Type Object_Type = System.Type.GetType(Class_name);//获取指定名称的类型
        String str = typeof(T).GetType().Name.ToString();
        if (Table_Name.ToString().Trim().Length < 2)
        {
            String[] myarr;
            myarr = str.Split('_');
            Table_Name = myarr[myarr.Length - 1].ToString();
        }

        Common_Prefix = Table_Name + "_";
        object Object_Instance = Activator.CreateInstance(Object_Type, null);//创建指定类型实例
        PropertyInfo[] fields = Object_Instance.GetType().GetProperties();//获取指定对象的所有公共属性
        object obj = Activator.CreateInstance(Object_Type, null);
        if (dt.Rows.Count == 1)
        {
            foreach (DataRow dr in dt.Rows)
            {
                foreach (DataColumn dc in dt.Columns)
                {
                    foreach (PropertyInfo t in fields)
                    {
                        if (dc.ColumnName == t.Name.ToString().Replace(Common_Prefix.ToString(), ""))
                        {
                            t.SetValue(obj, dr[dc.ColumnName], null);//给对象赋值
                            continue;
                        }
                        
                    }

                }
            }

        }
        return (T)obj;
    }
    /// <summary>
    /// 通过DATATABLE和对象实例参数 为对象赋值(为指定类型对象属性赋值)
    /// </summary>
    /// <typeparam name="T">对象类型</typeparam>
    /// <param name="dt">DATATABLE 类型参数</param>
    /// <param name="Entry_Object">对象实例</param>
    /// <returns>返回指定类型对象实例;调用方法: </returns>
    public T SET_Property_Value_FOR_OBJECT_BY_Object_And_Dt<T>(DataTable dt, T Entry_Object)
    {
        Type  Object_Type= Entry_Object.GetType();//获取指定名称的类型
        object Object_Instance = Activator.CreateInstance(Object_Type, null);//创建指定类型实例
        PropertyInfo[] fields = Object_Instance.GetType().GetProperties();//获取指定对象的所有公共属性
        object obj = Activator.CreateInstance(Object_Type, null);
        String str = typeof(T).GetType().Name.ToString();
        if (Table_Name.ToString().Trim().Length < 2)
        {
            String[] myarr;
            myarr = str.Split('_');
            Table_Name = myarr[myarr.Length - 1].ToString();
        }

        Common_Prefix = Table_Name + "_";
        if (dt.Rows.Count == 1)
        {
            foreach (DataRow dr in dt.Rows)
            {
                foreach (DataColumn dc in dt.Columns)
                {
                    foreach (PropertyInfo t in fields)
                    {
                        if (dc.ColumnName == t.Name.ToString().Replace(Common_Prefix.ToString(), ""))
                        {
                            t.SetValue(obj, dr[dc.ColumnName], null);//给对象赋值
                            continue;
                        }
                        
                    }

                }
            }

        }
        return (T)obj;
    }
    /// <summary>
    /// 通过DATATABLE类型参数为指定类型对象字段赋值
    /// </summary>
    /// <typeparam name="T">指定类型</typeparam>
    /// <param name="dt">DATDTABLE参数</param>
    /// <returns>返回指定类型对象;调用方法: </returns>
    public T SET_Fieldinfo_Value_FOR_OBJECT_BY_Dt<T>(DataTable dt)
    {
        Type Object_Type = typeof(T);//获取指定名称的类型
        object Object_Instance = Activator.CreateInstance(Object_Type, null);//创建指定类型实例
        FieldInfo[] fields = Object_Instance.GetType().GetFields();//获取指定对象的所有公共属性
        object obj = Activator.CreateInstance(Object_Type, null);
        if (dt.Rows.Count == 1)
        {
            foreach (DataRow dr in dt.Rows)
            {
                foreach (DataColumn dc in dt.Columns)
                {
                    foreach (FieldInfo f in fields)
                    {
                        if (dc.ColumnName == f.Name)
                        {
                            f.SetValue(obj, dr[dc.ColumnName.ToString()].ToString());//给对象赋值
                            continue;
                        }
                        
                    }

                }
            }

        }
        return (T)obj;
    }
    /// <summary>
    /// 通过DATATABLE数据参数和指定实例类型参数来对实体类型参数赋值(为指定类型对象字段赋值)
    /// </summary>
    /// <typeparam name="T">指定类型</typeparam>
    /// <param name="dt">DATATABLE数据参数</param>
    /// <param name="Entry_Object">指定类型参数</param>
    /// <returns>返回赋值完毕后的指定类型对象;调用方法: </returns>
    public T SET_Fieldinfo_Value_FOR_OBJECT_BY_Object_AND_Dt<T>(DataTable dt, T Entry_Object)
    {
        Type Object_Type = Entry_Object.GetType();//获取指定名称的类型
        object Object_Instance = Activator.CreateInstance(Object_Type, null);//创建指定类型实例
         FieldInfo [] fields = Object_Instance.GetType().GetFields();//获取指定对象的所有公共属性
        object obj = Activator.CreateInstance(Object_Type, null);
        if (dt.Rows.Count == 1)
        {
            foreach (DataRow dr in dt.Rows)
            {
                foreach (DataColumn dc in dt.Columns)
                {
                    foreach (FieldInfo f in fields)
                    {
                        if (dc.ColumnName == f.Name)
                        {
                            f.SetValue(obj, dr[dc.ColumnName]);//给对象赋值
                            continue;
                        }
                        
                    }

                }
            }

        }
        return (T)obj;
    }
    /// <summary>
    /// 通过DATATABLE数据参数和指定实例类型名称参数来对实体类型参数赋值(为指定类型对象字段赋值)
    /// </summary>
    /// <typeparam name="T">指定实例类型</typeparam>
    /// <param name="dt">DATATABLE数据参数</param>
    /// <param name="Class_Name">指定实例类型名称</param>
    /// <returns>返回赋值完毕后的指定类型对象;调用方法: </returns>
    public T SET_Fieldinfo_Value_FOR_OBJECT_BY_Class_Name_And_Dt<T>(DataTable dt, String Class_Name)
    {
        System.Type Object_Type = System.Type.GetType(Class_Name);//获取指定名称的类型
        object Object_Instance = Activator.CreateInstance(Object_Type, null);//创建指定类型实例
        FieldInfo[] fields = Object_Instance.GetType().GetFields();//获取指定对象的所有公共属性
        object obj = Activator.CreateInstance(Object_Type, null);
        if (dt.Rows.Count == 1)
        {
            foreach (DataRow dr in dt.Rows)
            {
                foreach (DataColumn dc in dt.Columns)
                {
                    foreach (FieldInfo f in fields)
                    {
                        if (dc.ColumnName == f.Name)
                        {
                            f.SetValue(obj, dr[dc.ColumnName]);//给对象赋值
                            continue;
                        }
                        
                    }

                }
            }

        }
        return (T)obj;
    }
    /// <summary>
    /// 通过指定类型对象,为页面容器中的控件(TextBox)赋值;
    /// </summary>
    /// <typeparam name="T">指定类型</typeparam>
    /// <param name="md">指定类型参数</param>
    /// <param name="controls_content">容器控件名</param>
    public void Set_Value_FOR_TextBox_By_Object<T>(T md, Control controls_content)
    {
        Type type = md.GetType();
        object obj = Activator.CreateInstance(type);
        FieldInfo[] props = type.GetFields();
        foreach (FieldInfo p in props)
        {
            foreach (Control ctrl in controls_content.Controls)
            {
                if (ctrl is TextBox)
                {
                    String str = ctrl.ID.ToString();
                    Controls_Prefix = "";
                    String[] myarr;
                    myarr = str.Split('_');
                    Controls_Prefix = myarr[myarr.Length - 1].ToString();

                    if (p.Name.ToString().Replace(Common_Prefix.ToString(), "") == Controls_Prefix.ToString())
                    {

                        ((TextBox)ctrl).Text = p.GetValue(md).ToString();
                    }
                }
            }

        }
    }
    /// <summary>
    /// 通过DATATABLE参数和控件容器为空件容器中的TEXTBOX赋值;
    /// </summary>
    /// <param name="dt">DATATABLE参数</param>
    /// <param name="controls_content">容器控件</param>
    public void Set_Value_FOR_TextBox_By_Dt(DataTable dt, Control controls_content)
    {
        if (dt.Rows.Count == 1)
        {
            foreach (DataRow dr in dt.Rows)
            {
                foreach (DataColumn dc in dt.Columns)
                {
                    foreach (Control ctrl in controls_content.Controls)
                    {
                        if (ctrl is TextBox)
                        {
                            String str = ctrl.ID.ToString();
                            Controls_Prefix = "";
                            String[] myarr;
                            myarr = str.Split('_');
                            Controls_Prefix = myarr[myarr.Length - 1].ToString();

                            if (dc.ColumnName.ToString() == Controls_Prefix.ToString())
                            {

                                ((TextBox)ctrl).Text = dr[dc.ColumnName].ToString();
                                continue;
                            }
                        }
                    }
                }
            }
        }

    }

    public void Set_Value_FOR_Label_By_Dt(DataTable dt, Control controls_content)
    {
        if (dt.Rows.Count == 1)
        {
            foreach (DataRow dr in dt.Rows)
            {
                foreach (DataColumn dc in dt.Columns)
                {
                    foreach (Control ctrl in controls_content.Controls)
                    {
                        if (ctrl is Label)
                        {
                            String str = ctrl.ID.ToString();
                            Controls_Prefix = "";
                            String[] myarr;
                            myarr = str.Split('_');
                            Controls_Prefix = myarr[myarr.Length - 1].ToString();

                            if (dc.ColumnName.ToString() == Controls_Prefix.ToString())
                            {

                                ((Label)ctrl).Text = dr[dc.ColumnName].ToString();
                                continue;
                            }
                        }
                    }
                }
            }
        }

    }

    public void Set_Value_FOR_Label_By_Object<T>(T md, Control controls_content)
    {
        Type type = md.GetType();
        object obj = Activator.CreateInstance(type);
        FieldInfo [] props = type.GetFields();
        foreach (FieldInfo p in props)
        {
            foreach (Control ctrl in controls_content.Controls)
            {
                if (ctrl is Label)
                {
                    String str = ctrl.ID.ToString();
                    Controls_Prefix = "";
                    String[] myarr;
                    myarr = str.Split('_');
                    Controls_Prefix = myarr[myarr.Length - 1].ToString();

                    if (p.Name.ToString() == Controls_Prefix.ToString())
                    {

                        ((Label)ctrl).Text = p.GetValue(obj).ToString();
                    }
                }
            }

        }
    }
/// <summary>
/// 生成类中属性和字段的流代码
/// </summary>
/// <param name="propertyName">字段名称</param>
/// <returns>返回文本字符串;调用方法: </returns>
  public String Create_Class_Property_Fields_String(String Prefix,String propertyName)
    {
        StringBuilder sbProperty = new StringBuilder();
        sbProperty.Append(" /*<br>*"+ "对应数据库中表“"+Prefix.ToString()+"”中的字段:"+propertyName.ToString()+"<BR>*/<BR>" +"public   String   " + propertyName + "   = \"\";\n<br>");
        sbProperty.Append(" /*<br>*" + "对应数据库中表“" + Prefix.ToString() + "”中的字段:" + propertyName.ToString() + "<BR>*/<BR>" + " public   String   " + Prefix.ToString() + propertyName + "\n");
        sbProperty.Append(" {<br>\n");
        sbProperty.Append("<br> get{ <br>  return   " + propertyName + ";<br>}   \n");
        sbProperty.Append("<br> set{ <br>  " + propertyName + "   =   value;  <br> }\n");
        sbProperty.Append(" <br>}<br>");
        return sbProperty.ToString();
    }

  public String Create_Class_Body( String Prefix) {
      MYSQL_SQLDB SQLDB = new MYSQL_SQLDB();
      DataTable dt = new DataTable();
      String CLASS_BODY = "";
      dt = SQLDB.Get_DataTable_By_ExecuteSQL("SELECT column_name,data_type,character_maximum_length,numeric_precision,numeric_scale,is_nullable,extra ,column_default,column_comment FROM Information_schema.columns WHERE table_Name='" + Prefix.ToString() + "'");
      foreach (DataRow dr in dt.Rows)
      {
          String dc = dr["column_name"].ToString();

          CLASS_BODY = CLASS_BODY + Create_Class_Property_Fields_String((Prefix.ToString().Trim() + "_").ToString().Trim(), dc.ToString());

      }
      return CLASS_BODY;
  }

  public void Create_MODEL_DAL_BLL_Class(String path, String Proj_Profix, String TableName)
  {
    

      file_operate fp = new file_operate(path, Proj_Profix, TableName);
      String CLASS_BODY = "";
      CLASS_BODY= Create_Class_Body(TableName);
      fp.Create_Model_Cs_File(CLASS_BODY);
      fp.Create_DAL_Cs_File("");
      fp.Create_BLL_Cs_File("");
  }
/// <summary>
  /// 通过页面控件(TextBox)为指定对象类型实例对象赋值
/// </summary>
/// <typeparam name="T">指定对象类型</typeparam>
/// <param name="Entry_Object">实例对象</param>
/// <param name="controls_content">控件容器名称</param>
  /// <returns>返回赋值后的指定类型;调用方法: </returns>
  public T SET_Fieldinfo_Value_FOR_OBJECT_BY_Controls<T>(T Entry_Object, Control controls_content)
  {
      Type Object_Type = Entry_Object.GetType();//获取指定名称的类型
      object Object_Instance = Activator.CreateInstance(Object_Type, null);//创建指定类型实例
      FieldInfo[] fields = Object_Instance.GetType().GetFields();//获取指定对象的所有公共属性
      object obj = Activator.CreateInstance(Object_Type, null);
        foreach (Control ctrl in controls_content.Controls)
          {
              foreach (FieldInfo p in fields)
      {
      
              if (ctrl is TextBox)
              {
                  String str = ctrl.ID.ToString();
                  Controls_Prefix = "";
                  String[] myarr;
                  myarr = str.Split('_');
                  Controls_Prefix = myarr[myarr.Length - 1].ToString();

                  if (p.Name.ToString() == Controls_Prefix.ToString() && ((TextBox)ctrl).Text.ToString().Trim().Length > 0)
                  {
                      p.SetValue(obj, ((TextBox)ctrl).Text.ToString());//给对象赋值
                      continue;  // ((TextBox)ctrl).Text = p.GetValue(md, null).ToString();
                  }
                  
              }
          }

      }
      return (T)obj;
  }
/// <summary>
  /// 通过页面控件(TextBox)为指定对象类型实例对象赋值
/// </summary>
  /// <typeparam name="T">指定对象类型</typeparam>
  /// <param name="controls_content">控件容器名称</param>
/// <returns>返回赋值后的指定对象</returns>
  public T SET_Fieldinfo_Value_FOR_OBJECT_BY_Controls<T>( Control controls_content)
  {
      Type Object_Type = typeof(T);//获取指定名称的类型
      object Object_Instance = Activator.CreateInstance(Object_Type, null);//创建指定类型实例
      FieldInfo[] fields = Object_Instance.GetType().GetFields();//获取指定对象的所有公共属性
      object obj = Activator.CreateInstance(Object_Type, null);
      foreach (Control ctrl in controls_content.Controls)
      {
          foreach (FieldInfo p in fields)
          {

              if (ctrl is TextBox)
              {
                  String str = ctrl.ID.ToString();
                  Controls_Prefix = "";
                  String[] myarr;
                  myarr = str.Split('_');
                  Controls_Prefix = myarr[myarr.Length - 1].ToString();


                  if (p.Name.ToString() == Controls_Prefix.ToString() && ((TextBox)ctrl).Text.ToString().Trim().Length > 0)
                  {
                      p.SetValue(obj, ((TextBox)ctrl).Text.ToString());//给对象赋值
                      continue;  // ((TextBox)ctrl).Text = p.GetValue(md, null).ToString();
                  }
                  
              }
          }

      }
      return (T)obj;
  }
}

原文地址:https://www.cnblogs.com/greefsong/p/2575661.html