2010-08-09 29 views
-2

我做了一个实现知识表示的程序,它很好,但是如果我可以在飞行中创建和销毁类,它可能会更好。如何在运行时删除或创建类c#?

+0

你为什么要这么做? – Nealv 2010-08-09 21:04:05

+3

取决于你的意思。你的意思是创建一个全新的类定义?你可以使用Reflection.Emit,删除一个类,这是一个不。如果你的意思是实例化一个对象,然后删除它? '新的ClassNameHere(构造函数参数在这里)'创建一个,你不需要删除,GC照顾。 – Sekhat 2010-08-09 21:05:10

+0

你在说动态生成代码吗? – kniemczak 2010-08-09 21:06:34

回答

1

在C#3.0中就可以创建匿名类型,但正如STW指出,这不是在定义运行时,但编译时间。

var myClass = new { A = 5, Id = "MyClass", num = 0.187f}; 

Console.WriteLine(myClass.Id); 

如果你正在寻找真正即时创建一个新的类类型,一个迂回的方式是生成C#类文件,编译成汇编,并使用反射来加载类。

+0

匿名类型既不会创建,也不会在运行时“删除”。它们是具有编译器生成名称和一些特殊权限/规则的标准类,但它们绝不是动态的。 – STW 2010-08-09 21:08:52

+0

@STW:是的,一个重要的区别。我认为“动态”的含义是指没有明确定义一个类。不过你说得很对。 – Alan 2010-08-09 21:11:28

+0

匿名类型是c#3.0的一部分,它是.net 3.5的一部分而不是.net 3. – 2010-08-09 21:12:18