2010-01-18 59 views

回答

3

我曾想過爲UnrealScript做一個,但我遇到了奇怪的問題,如CodeBinaryOperatorType不包括排他或操作。 .NET 4中的新表達式樹似乎更好地代表了CodeDom應該在塊級別提供哪些功能(如在組成函數體的語句塊中)。

我認爲我們需要一個新的CodeDom,它接受System.CodeDom的外部部分並使用System.Linq.Expressions的內部部分。然後使結果能夠產生動態程序集或源代碼作爲輸出。 (現在我想起來了,編譯彙編實際上和創建一個新的「語言」來輸出源代碼相同)。

編輯:最重要的是,您還必須考慮實現CodeModel API ,因爲CodeDom經常被實現爲有人正在將新語言集成到Visual Studio中。

+4

在上次的Lang.NET研討會上,一位語言創作者抱怨類似的東西,微軟工程師迴應(只是半開玩笑):「CodeDom只要是C#就可以代表任何語言。」他基本上承認CodeDom是一種失敗,表達式樹(或者說「聲明」樹)是前進的方向。 – 2010-01-18 06:18:27

+1

@JörgWMittag:可以使用表達式樹來爲整個類生成源代碼嗎? – 2013-02-06 13:29:47