您的位置:首页 > 编程语言 > C#

如何做到c#动态实例化类?

2004-09-23 10:36 393 查看
我得到了一个字符串"clsMyPart",有一个类也叫clsMyPart,如何把字符串转为类啊
比如:
string strClass = "clsMyPart";
strClass myClass = new strClass();
这样写肯定是错的,我该怎么写啊?

//==========================================================

回复人: ruixing123(想入非非) ( ) 信誉:100 2004-09-21 09:29:00 得分: 0

字符串是数据类型,类是面向对象语言中一个抽象的概念?

//==========================================================

回复人: thinkingforever(努力学习) ( ) 信誉:105 2004-09-21 09:37:00 得分: 0

http://community.csdn.net/Expert/topic/3361/3361663.xml?temp=.267605

//==========================================================

回复人: soulroom(易水之风) ( ) 信誉:90 2004-09-21 09:39:00 得分: 0

Activator.CreateInstance(assemblyName, typeName);

//==========================================================

回复人: OriesMap() ( ) 信誉:100 2004-09-21 09:46:00 得分: 0

估计得用反射什么,比如getType()之类的。查一下吧。

//==========================================================

回复人: henryfan1(每天好心情(*_*)) ( ) 信誉:72 2004-09-21 09:53:00 得分: 0

Assembly SampleAssembly;
SampleAssembly = Assembly.Load("程序集名称");
程序集必须被引,如果不想引用可以LoadFile

string strClass = "clsMyPart";
object myClass = SampleAssembly.CreateInstance(strClass );
具体用的时候可以将myClass拆箱

//==========================================================

回复人: revel(成梦) ( ) 信誉:100 2004-09-21 09:56:00 得分: 0

你要在类中建一个变量,再把字符串的值赋给变量就行

//==========================================================

回复人: chsfly(南山) ( ) 信誉:100 2004-09-21 10:07:00 得分: 0

你意思是不是:提供一个类的名称,然后根据这个类名将这个类进行实例化.是这个意思吗?

//==========================================================

回复人: chsfly(南山) ( ) 信誉:100 2004-09-21 10:15:00 得分: 0

如果是这样的意思可以通过ConstructorInfo来实现,具体参见msdn.

//==========================================================

回复人: butterflya(我心飞翔) ( ) 信誉:100 2004-09-21 10:29:00 得分: 0

南山 就是你所说的意思!

//==========================================================

回复人: bflovesnow() ( ) 信誉:100 2004-09-21 11:13:00 得分: 0

反射

//==========================================================

回复人: butterflya(我心飞翔) ( ) 信誉:100 2004-09-21 11:21:00 得分: 0

哥哥们 讲具体的啊 我搞不懂 !!
我的类文件叫clsMyPart.cs 类叫clsMyPart,clsMyPart有公共方法 myFunction(),具体该怎么做啊???

//==========================================================

回复人: xupc(寻巢鸟) ( ) 信誉:100 2004-09-21 12:14:00 得分: 0

Type a=Type.GetType("clsMyPart");

//==========================================================

回复人: butterflya(我心飞翔) ( ) 信誉:100 2004-09-21 12:46:00 得分: 0

楼上的 :未将对象引用设置到对象的实例。

//==========================================================

回复人: yellowhwb(KaDoO) ( ) 信誉:99 2004-09-21 13:19:00 得分: 0

Type t = Type.GetType("XXX.clsMyPart",Version=1.0.3300.0, Culture=neutral, PublicKeyToken=XXXXXXXXXXXXXXXX");//类的全名+版本号+PublicKeyToken,如Type t = Type.GetType("System.Data.DataTable,System.Data,Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089");

clsMyPart table = (clsMyPart)Activator.CreateInstance(t);

//==========================================================

回复人: butterflya(我心飞翔) ( ) 信誉:100 2004-09-21 13:41:00 得分: 0

strClass会得到"webpartFiles","webparDoc"等字符串,这些字符串正好是我的类
//-----------------------------------
for (int i = 0; i <= positionDS.Tables["tb_layout"].Rows.Count-1; i++)
{
int Iscomponent = Int32.Parse(positionDS.Tables["tb_layout"].Rows[i]["intIscomponent"].ToString());
string strClass = positionDS.Tables["tb_layout"].Rows[i]["strCtrlSource"].ToString();

if (Iscomponent == 0)
{
//这里是需要将字符串实例化成类的地方,上面的方法都没有成功

}
}

-------------------------------------------------------------------------

//下面是我的类文件 webpartFiles.cs
using System;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.ComponentModel;
using System.Data;
using System.Data.SqlClient;
using System.Configuration;

namespace contentManage
{
/// <summary>
/// webpartQuery改编至webpartDoc
/// </summary>
[DefaultProperty("Text"),
ToolboxData("<{0}:webpart runat=server></{0}:webpart>")]
public class webpartFiles: WebControl
{

public webpartFiles(string strlay)
{
webpart myWebpart = new webpart();
myWebpart.leftTitleCss = "fileTitleL";
myWebpart.rightTitlweCss = "fileTitleR";
myWebpart.centerTitleCss = "fileTitle";
myWebpart.listBgCss = "filebg";
myWebpart.pointImg = "<img src=\"images/ico_down.gif\" alt=\"download\" />";

myWebpart.titleLink = "model_filesList.aspx?classid=";
myWebpart.addLink = "adminEditFiles.aspx?perclassid=";
myWebpart.editLink = "adminEditfiles.aspx?itemid=";
myWebpart.viewLink = "viewDocument.aspx?itemid=";

myWebpart.TBidName = "ItemID";
myWebpart.TBTitleName = "FileFriendlyName";
myWebpart.TBWriterName = "CreatedByUser";
myWebpart.TBCreateTimeName = "CreatedDate";

myWebpart.querySqlTable//--------------------------------------------------------------------------------------------50 = " SELECT //==========================================================50 ItemID,ModuleID,FileFriendlyName,FileNameUrl,CreatedByUser,CreatedDate,Category,ContentSize,intCheck FROM tb_Documents ";
myWebpart.querySqlTable//--------------------------------------------------------------------------------------------5 = " SELECT //==========================================================5 ItemID,ModuleID,FileFriendlyName,FileNameUrl,CreatedByUser,CreatedDate,Category,ContentSize,intCheck FROM tb_Documents ";
myWebpart.querySqlView = " where ModuleID='"+strlay+"' and intcheck=0 order by itemid desc ";
myWebpart.querySqlEdit = " where ModuleID='"+strlay+"' and (intcheck=0 or CreatedByUser ='"+HttpContext.Current.User.Identity.Name.ToString()+"') order by itemid desc";
myWebpart.querySqlCheck = " where ModuleID='"+strlay+"' order by itemid desc";

myWebpart.webparTitleBuild(strlay);

this.Controls.Add(myWebpart);

}

}

}

//==========================================================

回复人: xupc(寻巢鸟) ( ) 信誉:100 2004-09-21 14:01:00 得分: 0

只是给你一条思考的线路,具体方法自已举一反三,好好查下MSDN

Assembly asm=Assembly.LoadFile("your dll file");
Type a=asm.GetType("type name")

//==========================================================

回复人: adailee(为了一棵树,我放弃了整个森林) ( ) 信誉:100 2004-09-21 14:03:00 得分: 0

3,2,1,反射!

//==========================================================

回复人: butterflya(我心飞翔) ( ) 信誉:100 2004-09-21 14:47:00 得分: 0

没想到这个问题这么复杂。。。。。。。。。。。

//==========================================================

回复人: butterflya(我心飞翔) ( ) 信誉:100 2004-09-22 09:26:00 得分: 0

还是没有解决 upupup

//==========================================================
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: