27
18911184380
當前位置:首頁 > 資訊 > 建站知識

[北(běi)京網站制作].NET程序員(yuán)不要錯過如此強大(dà)的(de)T4模闆

2011-10-20 酷站科技 大(dà)

功能齊全的(de)T4文字模闆

期待您最少能意識到即便有編碼全自動制作器,但數據庫查詢構造變動等要素也(yě)會讓我們産生許多(duō) 的(de)不便。這(zhè)類立即放進新項目裏.tt文檔的(de)益處當然無需多(duō)講過。有尤其的(de)業務流程要求,在.用(yòng)partial類來(lái)完成,以防模版文檔自動升級編碼時(shí)将筆寫的(de)編碼遮蓋掉。(北(běi)京市網站制作)

T4文字模闆究竟有什(shén)麽作用(yòng)?什(shén)麽時(shí)候用(yòng)?

看一下(xià)下(xià)邊這(zhè)一實例你應該便會懂(dǒng)了(le):

在建一個(gè)控制面闆程序運行,删掉裏邊的(de)全部文檔,在建一個(gè)Program.tt的(de)文檔,并鍵入以下(xià)內容:


 
  1. <#@ template language="C#"debug="true"#> 
  2. <#@ output extension=".cs"encoding="utf-8"#> 
  3. <#  
  4. stringClassName = "Program";  
  5. #>stringClassName = "Program";  
  6. #> 
  7. namespaceHelloAngel  
  8. {  
  9. usingSystem;  
  10. class<#=ClassName #> 
  11. {  
  12. staticvoidMain(string[] args)  
  13.  {  
  14. Console.WriteLine("Hello Angel");  
  15. }  
  16. }  

儲存後大(dà)家會見到解決方法任務管理(lǐ)器中是這(zhè)一款式的(de):

這(zhè)時(shí)的(de)Program.cs文件更是大(dà)家的(de)Program.tt文檔轉化(huà)成的(de),其內容以下(xià):

  1. namespaceHelloAngel  
  2. {  
  3. usingSystem;  
  4. classProgram  
  5. {  
  6. staticvoidMain(string[] args)  
  7. {  
  8. Console.WriteLine("Hello Angel");  
  9. }  
  10. }  

看一下(xià)下(xià)邊2個(gè)命令:

  1. <#@ template language="C#"debug="true"#> 
  2. <#@ output extension=".cs"encoding="utf-8"#> 

<#@ template #>命令中language特定了(le)大(dà)家模版運作應用(yòng)的(de)語言,能夠 是VB,或C#,debug申明(míng)了(le)是不是應用(yòng)調節,假如用(yòng)不上調節,能夠 設定爲false.

<#@ output #>命令中extension特定了(le)輸出文檔的(de)後綴名,encoding特定輸出文檔的(de)編碼方案。

換句話(huà)說,我們可(kě)以應用(yòng)C#語言來(lái)寫此模版文檔中的(de)邏輯性,模版可(kě)能輸出一個(gè)與模版文件夾名稱同樣,拓展名叫.cs編号爲utf-8的(de)文檔。

這(zhè)兒(ér)稍加掌握下(xià),接下(xià)去看一下(xià)命令的(de)英語的(de)語法吧:

命令的(de)英語的(de)語法以下(xià)所顯示:

  1. <#@ DirectiveName [AttributeName = "AttributeValue"] ... #> 

務必将全部特點值放到雙引号内。假如值自身包括冒号,則務必應用(yòng) 标識符對(duì)這(zhè)種冒号開展轉義。

命令一般是模版文檔或包括的(de)文檔中的(de)第一個(gè)原素。不可(kě)将他(tā)們置放在代碼塊 <#...#> 内,都不應置放在類功能塊 <# ...#> 以後。

T4 模版命令

<#@ template [language="VB"] [hostspecific="true"] [debug="true"] [inherits="templateBaseClass"] [culture="code"] [compilerOptions="options"] #>

T4 主要參數命令

<#@ parameter type="Full.TypeName"name="ParameterName"#>

T4 輸出命令

<#@ output extension=".fileNameExtension"[encoding="encoding"] #>

T4 程序流程集命令

<#@ assembly name="[assembly strong name|assembly file name]"#>

T4 導進命令

<#@ import namespace="namespace"#>

T4 包括命令

<#@ include file="filePath"#>

看過上邊的(de)命令後,就嘗試寫個(gè)模版文檔轉化(huà)成一些類來(lái)訓練一下(xià)吧:

  1. <#@ template language="C#"debug="true"#> 
  2. <#@ output extension=".cs"encoding="utf-8"#> 
  3. <#@ import namespace="System.Collections.Generic"#> 
  4. <#  
  5. List<List<string>classNames =  
  6. new List<string>()  
  7. {  
  8. "Hello",  
  9. "Test"  
  10. };  
  11. List<string>callMethods = new List<string>();  
  12.  #> 
  13. namespace HelloAngel  
  14.  {  
  15. using System;  
  16. <#  
  17. foreach (string className in classNames)  
  18. {  
  19. callMethods.Add(string.Format("{0}.Show();", className));  
  20. #>foreach (string className in classNames)  
  21. {  
  22. callMethods.Add(string.Format("{0}.Show();", className));  
  23. #> 
  24. class <#=className #> 
  25. {  
  26. /// <summary> 
  27. /// <#=className #>的(de)注解  
  28. /// </summary> 
  29. public static void Show()  
  30. {  
  31. Console.WriteLine("ClassName:<#=className #>");  
  32. }  
  33. }  
  34. <#  
  35. #>}  
  36. #> 
  37. class Program  
  38. {   ;
  39. /// <summary> 
  40. /// 通(tōng)道方式 的(de)注解  
  41. /// </summary> 
  42. static void Main(string[] args)  
  43. {  
  44. <#  
  45. foreach (string callMethod in callMethods)  
  46. {  
  47. #>foreach (string callMethod in callMethods)  
  48. {  
  49. #> 
  50. // <#=callMethod #>啓用(yòng)  
  51. <#=callMethod #> 
  52.  <#  
  53. }  
  54. #>}  
  55. #> 
  56. }  
  57. }  

大(dà)家一般的(de)新項目多(duō)是分(fēn)了(le)簡易三層,擁有上邊的(de)一些工作經驗,你應該會想。如果隻寫三個(gè)類.tt文檔,就能全自動讓我們把全部三層維護保養好哪麽多(duō)令人(rén)激動啊!的(de)确,我是這(zhè)樣的(de)人(rén)幹了(le)一個(gè)新項目給大(dà)夥兒(ér)共享一下(xià):

看一下(xià)如今全部新項目成什(shén)麽樣子了(le):

這(zhè)兒(ér)不僅三個(gè)新項目了(le)。你加了(le)個(gè)UnitTest的(de)新項目,一個(gè)Adapters的(de)新項目,看項目規劃可(kě)以看出來(lái),UnitTest新項目便是一個(gè)測試報告。而Adapters新項目呢(ne),是實體線電源适配器新項目。先無論他(tā)們了(le)。

就那麽點物(wù)品,早已進行三層的(de)搭建了(le),僅僅還是Paramter方法的(de)。沒有對(duì)存儲過程的(de)适用(yòng)。十一要是沒有人(rén)陪著(zhe)我過得(de)話(huà),我能将對(duì)存儲過程的(de)适用(yòng)加上上來(lái)。

建新項目的(de)情況下(xià)建的(de)是.net 4的(de),這(zhè)兒(ér)我将它改成.net2.0的(de)了(le)。但是自己隻配有visual stuido 2010,假如您應用(yòng)的(de)是Visual studio 2008請您自主将新項目文檔中的(de)版本信息更改,此方式 在網上有很多(duō)。我不多(duō)唠叨了(le)。

标識:北(běi)京市網站制作 高(gāo)檔網站建設

來(lái)源于申明(míng):以上内容一部分(fēn)(包括照(zhào)片、文本)來(lái)自互聯網,若有侵權行爲,請立即與本網站聯絡(010-57218159)。
如沒特殊注明(míng),文章(zhāng)均爲酷站科技原創,轉載請注明(míng)來(lái)自39281.html
聯系專業的(de)商務顧問,制定方案,專業設計,一對(duì)一咨詢及其報價詳情
服務熱(rè)線服務熱(rè)線 18911184380
聯系我們 contact us
18911184380
18911184380 — 海澱營業部
18911184380— 昌平營業部
+

酷站科技爲你提供上門/網站策略方案

留下(xià)聯系方式,我們将會在一個(gè)工作日内與你聯系

隐私條款信息保護中,請放心填寫