动态实例化类的同事 怎么给类中的属性赋值 或者说怎么给类中带参数的构造函数赋值

wang520d 2008-04-02 10:16:28
我用下面的方法动态实例化了一个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)的属性
赋值
...全文
186 20 打赏 收藏 转发到动态 举报
写回复
用AI写文章
20 条回复
切换为时间正序
请发表友善的回复…
发表回复
xuwei1027 2010-07-17
  • 打赏
  • 举报
回复
学习了 ,谢谢楼主
wang520d 2008-04-03
  • 打赏
  • 举报
回复
自己顶上去。。
wang520d 2008-04-03
  • 打赏
  • 举报
回复
[Quote=引用 17 楼 wolf_410 的回复:]
THS.Logic.Product.Test pt=new THS.Logic.Product.Test ("1","2");
测试监视对象Pt应该是:
pt.CustomersTable=1;
pt.PKIDField =2;
你那个构造函数不是还继承了另一个类?
[/Quote]

哥们你这个是静态new一个类 这样我知道
好啦问题解决了 结贴
wang520d 2008-04-03
  • 打赏
  • 举报
回复
哎自己搞定


Type t1 = assembly.GetType("THS.Logic.Product.Test");

object obj = Activator.CreateInstance(t1, new object[] {x,y});
wolf_410 2008-04-03
  • 打赏
  • 举报
回复
THS.Logic.Product.Test pt=new THS.Logic.Product.Test ("1","2");
测试监视对象Pt应该是:
pt.CustomersTable=1;
pt.PKIDField =2;
你那个构造函数不是还继承了另一个类?
wolf_410 2008-04-03
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 wang520d 的回复:]
问题是动态初始化类的时候 是带不了参数传给构造函数的
[/Quote]
你的意思是实例化类的时候,没有带参数吗?比如 model text=new model();这样吗?然后想在实体类内部,通过实体类自己的方法里面给自己的属性赋值?

我猜你的实体类里面没有带参数的构造函数,重载一个虚方法吧

wang520d 2008-04-03
  • 打赏
  • 举报
回复
其实现在的问题转变成啦怎么动态实例化一个带参数的构造函数的类 如这个类 我怎么动态实例化

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;
}
}
}
wang520d 2008-04-03
  • 打赏
  • 举报
回复
问题是动态初始化类的时候 是带不了参数传给构造函数的
wolf_410 2008-04-03
  • 打赏
  • 举报
回复
是啊,你的意思不是要动态赋值吗?没参数怎么动态?而且那个实体类你应该是放在外部的.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);
wang520d 2008-04-03
  • 打赏
  • 举报
回复
上楼的朋友 你的意思是做个方法给属性赋值 对吧?只能单独多个方法赋值吗?
wolf_410 2008-04-03
  • 打赏
  • 举报
回复
实例化的同时,给他的每个成员赋值啊。动态赋值的话,楼主应该要传个参数给实体类啊,然后实体类里面进行分配赋值
给你个例子:
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;
Remark=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 _remark;
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 Remark
{
set{ _remark=value;}
get{return _remark;}
}
/// <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.Remark=_OracleDataReader["Remark"].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");
}
}
}
wang520d 2008-04-03
  • 打赏
  • 举报
回复
正常实例化上面那个类的时候自动调用默认的构造函数 构筑函数中默认给属性赋值了 我想动态给那两个属性赋值
也就是说用参数的形式 可是如果我把构造函数带参数后 我不知道怎么动态实例化了?


假如我有这么一个类

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);//实例
tangqiaojie 2008-04-03
  • 打赏
  • 举报
回复
MARK
wang520d 2008-04-03
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 zhanglei5415 的回复:]
真不知道lz意欲何为
[/Quote]

动态实例化类?明白?
给类中的属性赋值 明白?
ReyZhang 2008-04-03
  • 打赏
  • 举报
回复
真不知道lz意欲何为
wang520d 2008-04-03
  • 打赏
  • 举报
回复
来人帮忙啊 怎么在动态实例化类的同时 给类中的属性赋值
wang520d 2008-04-02
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 truelove12 的回复:]
看不懂什么意思.
[/Quote]
我倒
问题很简单 动态初始化的同时 怎么给类的属性赋值(动态的)public T_Product_List()
{
//表名称

this.CustomersTable = "T_Product_List";

//主键字段名称
this.PKIDField = "ListID";
}
  • 打赏
  • 举报
回复
看不懂什么意思.
wang520d 2008-04-02
  • 打赏
  • 举报
回复
怎么沉了 这问题没技术含量么??
wang520d 2008-04-02
  • 打赏
  • 举报
回复
我想动态初始化类的时候 给属性动态赋值。。。。怎么实现 。。。。????

62,074

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧