2009-10-25 183 views
1

我必須在C#中開發多語言代碼生成器。實際上,我們的想法是,我們有幾種內部應用程序框架可以用各種語言(Java,Python,C++)進行數據庫訪問。但是他們的基本工作原理是一樣的。我們覺得代碼生成器可以幫助我們縮短開發時間。所以我決定編寫一個代碼生成器以方便我們的開發。C代碼生成器#

我應該遵循從數據庫表生成類的標準基本技術步驟是什麼?

我應該使用\t\r\n

什麼是達到最快速度的技術?

我不想使用RegEx。

請讓我知道你的個人經驗。

+0

你能更具體嗎?你能給出一個「多語言代碼生成器」的輸入和幾個輸出的例子嗎? – 2009-10-25 07:38:08

+0

你看過現有的代碼生成器選項嗎? – 2009-10-25 07:39:44

+0

@Dominic Cooney,@Mitch Wheat請參閱更新。 – anonymous 2009-10-25 07:44:44

回答

4

這真的取決於你的意思;有很多的選擇:

  • CodeDOM - 提供了一個對象模型,可以產生多國語言的代碼,但可能會非常棘手使用
  • T4(又名TT) - 當下的「時尚」的代碼生成
  • xslt - 一個有用的回退;不是時尚爲T4,但可行 - 棘手像VB

空白依賴語言在任何情況下,我將建立一個基本的對象模型,表示從那裏數據和工作。我已經知道有人從數據庫中只用SELECT來編寫代碼,但是它是醜陋的罪過,並且極端的維護是痛苦的。

回答您關於\t\r,\n等問題 - 我不明白這個問題,但是:無論目標語言是什麼意思!在這裏VB是一個棘手的問題(C#等比較容易,因爲他們不太關心空白)。

我已經成功地使用了xslt,但很大程度上是因爲我已經知道xslt,並且需要支持2.0(T4不在2.0中)。否則T4本來是我的下一個刺,只是因爲我想學習它; -p

+0

T4很不錯,我使用了一個很大的修改後的linq2SQL模板(來自codeplex)來調整它完全符合我的需求:) – leppie 2009-10-25 07:56:24

1

看來你需要模板功能,所以像Marc Gravell所建議的T4是相當不錯的。 SubSonic當前使用T4生成代碼。在過去,SubSonic使用Asp.Net作爲模板系統來生成代碼。

這似乎有點不左外野,但約翰Resig的有mirco-template function他寫的Javascript,讓您處理具有語法喜歡的模板:

<script type="text/html" id="item_tmpl"> 
    <div id="<%=id%>" class="<%=(i % 2 == 1 ? " even" : "")%>"> 
    <div class="grid_1 alpha right"> 
     <img class="righted" src="<%=profile_image_url%>"/> 
    </div> 
    <div class="grid_6 omega contents"> 
     <p><b><a href="/<%=from_user%>"><%=from_user%></a>:</b> <%=text%></p> 
    </div> 
    </div> 
</script> 

你喂模板JSON對象一個數據源。這種方法的好處在於,您無需編譯和部署即可快速創建模板系統 - 只需啓動瀏覽器並生成代碼即可。