我用下面的方法动态实例化了一个T_Product_List类 该类在构造函数中给继承类的属性赋值了
这个类的构造函数为默认的public class T_Product_List:THS.Logic.SysSetup.UniformObject
{
public T_Product_List()
{
//表名称 this.CustomersTable = "T_Product_List"; //主键字段名称
this.PKIDField = "ListID";
}
...

Assembly assembly = Assembly.LoadFrom(@"E:\HanXiang\THS.HXSoft\THS.BLOGIC\bin\Debug\THS.Logic.dll");
        Type t = assembly.GetType("THS.Logic.Product.T_Product_List");
 MethodInfo m_getTableDS = t.GetMethod("getTableDS");
        object obj = Activator.CreateInstance(t);
        object o_getTableDS = m_getTableDS.Invoke(obj, new object[] { "520" });
        DataSet ds = (DataSet)o_getTableDS; 问题怎么在动态初值化类的时候 给T_Product_List的继承类(THS.Logic.SysSetup.UniformObject)的属性
赋值

解决方案 »

  1.   

    我倒 
    问题很简单 动态初始化的同时 怎么给类的属性赋值(动态的)public T_Product_List()
            {
                //表名称            this.CustomersTable = "T_Product_List";            //主键字段名称
                this.PKIDField = "ListID";
            }
      

  2.   

    正常实例化上面那个类的时候自动调用默认的构造函数 构筑函数中默认给属性赋值了 我想动态给那两个属性赋值
    也就是说用参数的形式 可是如果我把构造函数带参数后 我不知道怎么动态实例化了?
    假如我有这么一个类namespace THS.Logic.SysSetup
    {
    /// <summary>
    /// 本系统业务类的顶极父类,所有业务类都要直接或间接继承此类
    /// </summary>
    public class UniformObject
    { #region vars
    /// <summary>
    /// 数据库数据表
    /// </summary>
    private string m_CustomersTable = "";
    /// <summary>
    /// 数据库关键字段
    /// </summary>
    private string m_PKIDField = ""; /// <summary>
    /// 每页显示的记录数
    /// </summary>
    private int iDisplayCount = 15;
    #endregion
    #region properties
    /// <summary>
    /// 数据库数据表
    /// </summary>
    public String CustomersTable
    {
    get
    {
    return m_CustomersTable;
    }
    set
    {
    m_CustomersTable = value;
    }
    }
    /// <summary>
    /// 数据库关键字段
    /// </summary>
    public String PKIDField
    {
    get
    {
    return m_PKIDField;
    }
    set
    {
    m_PKIDField = value;
    }
    }
    /// <summary>
    /// 显示数据记录数
    /// </summary>
    public int DisplayCount
    {
    get { return iDisplayCount; }
    set { iDisplayCount = value; }
    }
    #endregion
    #region method
    /// <summary>
    /// 构造函数
    /// </summary>
    public UniformObject()
    {
    //
    // TODO: 在此处添加构造函数逻辑
    //
    }下面我这样动态实例化这个类:可是怎么给上面那个类中的属性赋值呢?
    Assembly assembly = Assembly.LoadFrom(@"E:\HanXiang\THS.HXSoft\THS.BLOGIC\bin\Debug\THS.Logic.dll");
            Type t = assembly.GetType("THS.Logic.SysSetup.UniformObject");//指定要实例化类的全名 就是我上面那个类的全名
     MethodInfo m_getTableDS = t.GetMethod("getTableDS");//指定要调用的方法名
            object obj = Activator.CreateInstance(t);//实例
      

  3.   

    实例化的同时,给他的每个成员赋值啊。动态赋值的话,楼主应该要传个参数给实体类啊,然后实体类里面进行分配赋值
    给你个例子:namespace Tool_State.Model
    {
    /// <summary>
    /// 实体类T_TOOL_PERSONAL_STATE 。(属性说明自动提取数据库字段的描述信息)
    /// </summary>
    [Serializable]
    public class T_Tool_Public_State
    {
    public T_Tool_Public_State()
    {
                State_id=String.Empty;
    Tool_id=String.Empty;
    Verify_date=String.Empty;
                Next_verify=String.Empty;
    Verifier=String.Empty;
    Tool_status=String.Empty;
    Verify_result=String.Empty;
    Re=String.Empty;
    Recorder=String.Empty;
    Recorder_date=String.Empty;
    Update_man=String.Empty;
    Update_time=String.Empty;
    Order_Index=String.Empty;
    }
    #region Model
    private string _state_id;
    private string _tool_id;
    private string _verify_date;
    private string _next_verify;
    private string _verifier;
    private string _tool_status;
    private string _verify_result;
    private string _re;
    private string _recorder;
    private string _recorder_date;
    private string _update_man;
    private string _update_time;
    private string _order_index;
    /// <summary>
    /// 公共器具自动编号ID
    /// </summary>
    public string State_id
    {
    set{ _state_id=value;}
    get{return _state_id;}
    }
    /// <summary>
    /// 器具ID
    /// </summary>
    public string Tool_id
    {
    set{ _tool_id=value;}
    get{return _tool_id;}
    }
    /// <summary>
    /// 检验日期
    /// </summary>
    public string Verify_date
    {
    set{ _verify_date=value;}
    get{return _verify_date;}
    }
    /// <summary>
    /// 下次检验日期
    /// </summary>
    public string Next_verify
    {
    set{ _next_verify=value;}
    get{return _next_verify;}
    }
    /// <summary>
    /// 检验人
    /// </summary>
    public string Verifier
    {
    set{ _verifier=value;}
    get{return _verifier;}
    }
    /// <summary>
    /// 检验描述  1合格2不合格3作废
    /// </summary>
    public string Tool_status
    {
    set{ _tool_status=value;}
    get{return _tool_status;}
    }
    /// <summary>
    /// 检验结论
    /// </summary>
    public string Verify_result
    {
    set{ _verify_result=value;}
    get{return _verify_result;}
    }
    /// <summary>
    /// 备注
    /// </summary>
    public string Re
    {
    set{ _re=value;}
    get{return _re;}
    }
    /// <summary>
    /// 录入者
    /// </summary>
    public string Recorder
    {
    set{ _recorder=value;}
    get{return _recorder;}
    }
    /// <summary>
    /// 录入时间
    /// </summary>
    public string Recorder_date
    {
    set{ _recorder_date=value;}
    get{return _recorder_date;}
    }
    /// <summary>
    /// 更新人
    /// </summary>
    public string Update_man
    {
    set{ _update_man=value;}
    get{return _update_man;}
    }
    /// <summary>
    /// 更新时间
    /// </summary>
    public string Update_time
    {
    set{ _update_time=value;}
    get{return _update_time;}
    }
    /// <summary>
    /// 排序
    /// </summary>
    public string Order_Index
    {
    set{ _order_index=value;}
    get{return _order_index;}
    }
    #endregion Model
    /// <summary>
    /// 变更赋值操作。
    /// </summary>
    /// <param name="_OracleDataReader">要读取的数据对象。</param>
    private void SetValue(OracleDataReader _OracleDataReader)
    {
    while (_OracleDataReader.Read())
    {
    this.State_id = _OracleDataReader["State_id"].ToString();
    this.Tool_id = _OracleDataReader["Tool_id"].ToString();
    this.Tool_status = _OracleDataReader["Tool_status"].ToString();
    this.Verifier=_OracleDataReader["Verifier"].ToString();
    this.Verify_result=_OracleDataReader["Verify_result"].ToString();
    this.Re=_OracleDataReader["Re"].ToString();
    this.Recorder=_OracleDataReader["Recorder"].ToString();
    this.Update_man=_OracleDataReader["Update_man"].ToString();
    this.Order_Index=_OracleDataReader["Order_Index"].ToString(); if (_OracleDataReader["Verify_date"] == System.DBNull.Value)
    this.Verify_date = "";
    else
    this.Verify_date = Convert.ToDateTime(_OracleDataReader["Verify_date"]).ToString("yyyy-MM-dd HH:mm");
    if (_OracleDataReader["Next_verify"] == System.DBNull.Value)
    this.Next_verify = "";
    else
    this.Next_verify = Convert.ToDateTime(_OracleDataReader["Next_verify"]).ToString("yyyy-MM-dd HH:mm");
    if (_OracleDataReader["Recorder_date"] == System.DBNull.Value)
    this.Recorder_date = "";
    else
    this.Recorder_date = Convert.ToDateTime(_OracleDataReader["Recorder_date"]).ToString("yyyy-MM-dd HH:mm");
    if (_OracleDataReader["Update_time"] == System.DBNull.Value)
    this.Update_time = "";
    else
    this.Update_time = Convert.ToDateTime(_OracleDataReader["Update_time"]).ToString("yyyy-MM-dd HH:mm");
    }
    }
    }
      

  4.   

    是啊,你的意思不是要动态赋值吗?没参数怎么动态?而且那个实体类你应该是放在外部的.cs文件下,看看这个你应该知道namespace Tool_State.Model
    {
    /// <summary>
    /// 实体类T_TOOL_PERSONAL_STATE 。(属性说明自动提取数据库字段的描述信息)
    /// </summary>
    [Serializable]
    public class T_Tool_Public_State
    {
    public T_Tool_Public_State()//没参数的默认空值
    {
                            State_id=String.Empty;
    Tool_id=String.Empty;
    Verify_date=String.Empty; 
                            //.....
                     }
                     public T_Tool_Public_state(string Tool_id)//带参数的
                     {
                           State_id=String.Empty;
    Tool_id=String.Empty;
    Verify_date=String.Empty; 
                            //.....
                           SetValue(accessor.GetSingleRow());//查询数据库后得都结果集,并对成员赋值(这里只是个得到数据的例子)
                     }
                     #region Model
                     private string _state_id;
                     private string _tool_id;
                     private string _verify_date;
                     //...
             /// <summary>
            /// 公共器具自动编号ID
            /// </summary>
            public string State_id
            {
                set{ _state_id=value;}
                get{return _state_id;}
            }
            /// <summary>
            /// 器具ID
            /// </summary>
            public string Tool_id
            {
                set{ _tool_id=value;}
                get{return _tool_id;}
            }
            /// <summary>
            /// 检验日期
            /// </summary>
            public string Verify_date
            {
                set{ _verify_date=value;}
                get{return _verify_date;}
            }
            //...
            #endregion Model
            /// <summary>
            /// 变更赋值操作。
            /// </summary>
            /// <param name="_OracleDataReader">要读取的数据对象。</param>
            private void SetValue(OracleDataReader _OracleDataReader)
            {
                while (_OracleDataReader.Read())
                {
                    this.State_id = _OracleDataReader["State_id"].ToString();
                    this.Tool_id = _OracleDataReader["Tool_id"].ToString();
                    this.Verify_date = _OracleDataReader["Tool_status"].ToString();              
                }
            }
    }
       
    下面是在另个cs底下调用并实例化Tool_State.Model.T_Tool_Public_State Tool =new Tool_State.Model.T_Tool_Public_State(Tool_id);
      

  5.   

    其实现在的问题转变成啦怎么动态实例化一个带参数的构造函数的类  如这个类 我怎么动态实例化 
    using System;
    using System.ComponentModel;
    using System.Collections.Generic;
    using System.Diagnostics;
    using System.Text;namespace THS.Logic.Product
    {
        public partial class Test : THS.Logic.SysSetup.UniformObject
        {
            public Test(string x,string y)
            {
                this.CustomersTable = x;
                this.PKIDField = y;
            }
        }
    }
      

  6.   

    你的意思是实例化类的时候,没有带参数吗?比如 model text=new model();这样吗?然后想在实体类内部,通过实体类自己的方法里面给自己的属性赋值?我猜你的实体类里面没有带参数的构造函数,重载一个虚方法吧
      

  7.   

    THS.Logic.Product.Test pt=new THS.Logic.Product.Test ("1","2");
    测试监视对象Pt应该是:
    pt.CustomersTable=1;
    pt.PKIDField =2;
    你那个构造函数不是还继承了另一个类?
      

  8.   

    哎自己搞定
    Type t1 = assembly.GetType("THS.Logic.Product.Test");        object obj = Activator.CreateInstance(t1, new object[] {x,y});
      

  9.   


    哥们你这个是静态new一个类 这样我知道
    好啦问题解决了 结贴