Blue
Red
Green
Orange
Voilet
Slate
Dark

c#中如何在运行中根据指定的字符串初始化一个类(100分)

  • 主题发起人 chinaplate
  • 开始时间
C

chinaplate

Unregistered / Unconfirmed
GUEST, unregistred user!
如何在运行中根据指定的字符串初始化一个类
在程序中运行中,
public class A
{}
public class B
{}
public class test
{
string className;
....
className="A";
//怎么样通过变量className初始化类A?
}
 
K

kisse

Unregistered / Unconfirmed
GUEST, unregistred user!
public class A
{}
public class B
{}
public class test
{
//string className;
A s = new A
....
//className="A";
//怎么样通过变量className初始化类A?
}
 
F

faun

Unregistered / Unconfirmed
GUEST, unregistred user!
ModuleBuilder.DefineType(ClassName,TypeAttributes.Public);
 
C

chinaplate

Unregistered / Unconfirmed
GUEST, unregistred user!
faun:
能再详细说明吗?
我把我的具体应用说清楚吧。
我要做一个模拟仿真系统,比如要模拟一个电路图,其中包括一些开关,灯,标签,连线,仪表等元件
我为此定义了一个元件类库,大体是这样。
public class CComponent //元件类的祖先
{
private string name;
//元件名称
private string picFileName;
//元件显示图片
private string description;
//元件描述
private Point location;
//元件位置
public string Name
{
get{return name}
set{name=value}
}
...
}
public class CDisplayComponent:CComponent //显示元件类
{
private Font font;
private Color foreColor;
private Color backColor;
...
}
public class CActionComponent:CComponent //动作元件类
{
private string state;
//元件状态
..
}
public class CLable:CDisplayComponent //标签类,继承自显示元件类
{
private string text;
//标签内容
}
整个元件类库形成一个体系
CComponent
|----CDisplayComponent
| |------CLabel
| |------CLight
| |------CMeter
| |------...
|
|----CActionComponent
| |------CSwitch
| |------...
|
|----....
然后我的一个文件中记录一个电路模拟图,其中包含许多元件,以及元件的位置的属性,如
....
[CLabel]
Name="Lable1"
PicFileName=""
Discription="标签1"
Location="25,68"
Text="L-1"
[CLight]
Name="Light1"
PicFileName="light.bmp"
Discription="电源指示灯"
Location="25,88"
State="On"
[CLabel]
....
然后我要遍历这个文件,将其中记录的元件对象显示出来。
因为文件中具体记录的哪些类不知道,只知道记录类名的一个字符串,
就是这个问题了,
怎样通过一个字符串中存放的类名,将这个类实例化出来?
 
Y

yxyyyy

Unregistered / Unconfirmed
GUEST, unregistred user!
Activator.CreateInstance();
 
D

dxcwxc

Unregistered / Unconfirmed
GUEST, unregistred user!
1,确保待实例的CLASS在可以到达的ASSEMBLY中。
2,根据CLASSTYPENAME,Type>GetType(className).
3,Activator.CreateInstance(type)
4,用Reflection的几个函数你想对他如何操作都行
 
C

chinaplate

Unregistered / Unconfirmed
GUEST, unregistred user!
谢谢dxcwxc,yxyyyy,
我看看Reflection到底是什么东西,
我感到这个东西,张牙舞抓,功能强大,
我加紧落实一下。
 
Y

yxyyyy

Unregistered / Unconfirmed
GUEST, unregistred user!
呵呵,这个东东确实功能强大,我现在都拿他来编译c#文件
 
C

chinaplate

Unregistered / Unconfirmed
GUEST, unregistred user!
问题解决了,
但对于反射,我还是有点懵懵懂懂的。
有了具体问题,再向两位请教。
谢谢。
 

Similar threads

S
回复
0
查看
795
SUNSTONE的Delphi笔记
S
S
回复
0
查看
797
SUNSTONE的Delphi笔记
S
顶部 底部