C#怎么在运行时动态创建类

HGYDD 2010-08-25 04:40:46
比如:
我程序读取了数据后
例如数据库的一张表的结构字段
假设只有在程序运行时我程序才知道读到了那些字段,例如表 person
读到的字段有name,age数据类型分别为string int
现在程序是在运行的
我想程序在此刻生成一个类
public classic Person
{
private string name;
private int age;
}

然后我能够调用
在C++种听别人说,这种编译型的语言好型不可能实现,是这样吗?在c#种有办法实现吗?
c#种的构造出类型来,然后反射可以做到吗,我感觉左面不行呀。。。。。



高手来解答呀 。。。
...全文
1800 28 打赏 收藏 转发到动态 举报
写回复
用AI写文章
28 条回复
切换为时间正序
请发表友善的回复…
发表回复
whb147 2010-08-26
  • 打赏
  • 举报
回复
用反射可以吧
HGYDD 2010-08-26
  • 打赏
  • 举报
回复
个人总结:
看了这么多NR的回帖,我从中得到了一些信息
首先说明几点:
1.
动态创建实例
动态创建类
动态创建类型
通过不同方法都可以实现
2.
反射出对象的实例是个object,我转化成谁列?(在预先不知道类,也不知道此类和谁有什么关系,比如继承)这种情况下反射出来的类毫无意义,它仅仅只是个object,当然我们可以获得或是设置属性值(GetProperty("name").GetValue(o, null)),但是不能NEW 类名的方式获得,还是有点欠缺,不能满足我最上面的需求,
pavee 2010-08-26
  • 打赏
  • 举报
回复
C#4 dynamic type
xiaoanian 2010-08-26
  • 打赏
  • 举报
回复
学习了,NB
lostuser 2010-08-25
  • 打赏
  • 举报
回复
为什么要这样呢
烈火蜓蜻 2010-08-25
  • 打赏
  • 举报
回复
你这个需求,根本不需要动态编译的需求,因此就算你生成了这样的类,你也无法正常的那样使用,你也是只能反射来读取,那你还不如,直接用DataSet来取
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 gomoku 的回复:]
先告诉我们你要怎么用你的“动态创建类”,请举个例子。
[/Quote]

确实
上海程序员3 2010-08-25
  • 打赏
  • 举报
回复
C#估计能做到,只是我感觉应该直接提供这种动态创建类,动态创建函数和其它所有的功能。这样才能更灵活。

但我也想到一个问题,就是安全问题,如果这样动态,做出来的病毒都是动态生成自己的病毒代码,估计杀毒软件就无乱怎样都查询不出来了。

不过现在的jscript.net已经能直接做到这些了。
xrongzhen 2010-08-25
  • 打赏
  • 举报
回复
围观。。。
Dobzhansky 2010-08-25
  • 打赏
  • 举报
回复
code emit vs codedom
flowerjack 2010-08-25
  • 打赏
  • 举报
回复
个人认为不可实现,但各位大牛们都积极发言了。我只有围观的份了
hjx398 2010-08-25
  • 打赏
  • 举报
回复
这个厉害
wuyq11 2010-08-25
  • 打赏
  • 举报
回复
匿名类
CSharpCodeProvider p = new CSharpCodeProvider();
CompilerParameters param = new CompilerParameters(new string[] { "System.dll" });
string s = "namespace __ns{public class AAA{ public string name{get{return '";}} }}";
CompilerResults rel = p.CompileAssemblyFromSource(param, s);
Type t = rel.CompiledAssembly.GetType("");
object o = t.GetConstructor(System.Type.EmptyTypes).Invoke(null);
MessageBox.Show(t.GetProperty("name").GetValue(o, null).ToString());参考
zzqy10 2010-08-25
  • 打赏
  • 举报
回复
这个厉害,,
boringame 2010-08-25
  • 打赏
  • 举报
回复
呵呵,你朋友所谓的编译型语音不行。。。但是C#是半编译的。。。呵呵
兔子-顾问 2010-08-25
  • 打赏
  • 举报
回复
先动态编译创建类,然后反射这个类。
兔子-顾问 2010-08-25
  • 打赏
  • 举报
回复
assky124 2010-08-25
  • 打赏
  • 举报
回复
PropertyInfo[] ?

用反射获取属性集合?
HGYDD 2010-08-25
  • 打赏
  • 举报
回复
ls
果然是高手
加载更多回复(7)

110,535

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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