t4模板比asp.net中的類文件有什麼優勢?t4模板優於Class文件
就像我們正在使用t4模板生成強類型類一樣。我們可以使用asp.net中的c#類文件做同樣的事情。那麼,t4模板優於普通類文件的優點是什麼?
任何人都請指出這個場景,t4可以通過類文件實現。
問候, Sujith
t4模板比asp.net中的類文件有什麼優勢?t4模板優於Class文件
就像我們正在使用t4模板生成強類型類一樣。我們可以使用asp.net中的c#類文件做同樣的事情。那麼,t4模板優於普通類文件的優點是什麼?
任何人都請指出這個場景,t4可以通過類文件實現。
問候, Sujith
我與此引用從MSDN教程截取開始:
一個T4文本模板是能夠生成一個文本文件,文本塊和控制邏輯的混合物。控制邏輯在Visual C#或Visual Basic中被編寫爲程序代碼片段。生成的文件可以是任何種類的文本,如網頁,資源文件或任何語言的程序源代碼。
T4模板用於生成動態文本,甚至可以是一個類。實體框架或DataSet設計器是設計時代碼生成的很好例子,允許用戶以圖形方式將實體從數據庫拖放到Designer,然後生成所有類以反映數據庫表。
在引擎蓋下,一個自定義工具將生成的設計時間XML轉換爲C#類。這背後的機制類似於T4模板。
希望本概述能讓您更好地瞭解T4模板如何幫助您。
您可以編寫寫入其他代碼的代碼。有些東西你不能重構到一個單一的位置,或者通過T4(或任何代碼生成)更容易集中的東西。
可能存在代碼,其中一箇中央驅動程序可能需要多個文件或單個文件中的大量代碼才能根據該代碼進行更改。
另一種方式來利用好它...我用T4
模板編寫生成.sql
文件有點C#對象,.xsl
,一個.js
和.cs
文件。全部來自基於一組規則的單個C#對象。所以我從一個c#模板生成了幾個有用的文件。我可以讓它生成創建一個表來保存該類型所需的.sql。一個.xsl或.xml來定義與該項目相關的配置值,一個.js文件將一個強類型模型引入到javascript中,最後是.cs,用於c#中的實際模型。
簡而言之,T4模板可以根據一些輸入數據(如實體框架模型)爲您(和其他文件)生成類。在必須爲相同功能創建許多類(如用於大型實體框架模型的所有實體的類)的情況下,這非常方便。然後,T4模板將執行作業,並在輸入被更改時自動更新創建的類(您也可以在輸入文件上運行「自定義工具」以執行T4模板)。
T4模板可以(當然)創建部分類以允許您添加成員(到您創建的類的其他部分)。這樣,您可以添加模板重新創建類時不會覆蓋的功能。
基於EF模型生成POCO類(在.NET 4.5中爲EF的缺省值)的T4模板是T4模板良好用法的完美示例。另一個例子是T4模板,它爲EF模型的所有實體類創建視圖模型基類(用於MVVM)。