2010-11-07 77 views
1

我有一個類:有沒有辦法在C#中將類的源複製到字符串?

public class SomeClass { 
// properties and methods here 
} 

理想情況下,我想給全班發送到一個字符串,所以我可以在視圖渲染。我能想到的最好的方法是運行構建腳本並將其全部發送到靜態文本文件,然後在代碼中引用這些文本文件。有一個更好的方法嗎?我想能夠說:

return View(SomeClass.SourceToString()); 

我希望我不會錯過一個非常明顯的方式來實現這一點。

+0

你有權訪問源文件嗎? – Liton 2010-11-07 19:30:05

+0

是的,我有權訪問源代碼。 – user500038 2010-11-07 20:02:08

回答

5

C#被編譯到MSIL中。除引用原始源文件外,沒有直接訪問原始源的方法。

+0

我想你可以在編譯時將源代碼放入資源中,然後從那裏抓取它,你可以使用一些名稱模式來實現它。 – 2010-11-07 20:22:16

0

您可以使用反射來枚舉類的所有成員,並將每個成員的聲明/定義發送到StringBuilder,然後返回構建的字符串。

+0

嚴格來說,它不會成爲源代碼 – Andrey 2010-11-07 19:30:20

+0

,它不會給你源代碼。 (正如其名稱所暗示的,「源代碼」是編譯器生成MSIL的源代碼,反射並不能給你,它只能將MSIL編譯成C#代碼,所以你得到的C#代碼是*等價的*源代碼,但它與源代碼不一樣 – jalf 2010-11-07 19:32:49

0

恐怕沒有什麼直接的,反射會給你一個「重新解釋」的代碼形式,不同的結構,沒有評論,沒有方法的身體...... 也許你可以保存一個「副本「的代碼使用後生成腳本並在調用SourceToString方法時解析它。

我想你應該真的解釋爲什麼你會這樣的事情?也許我們將能夠建議你一個更好的解決方案。

相關問題