2010-08-09 48 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