についてNET T T 4テンプレート使用簡単説明>>第1部

7106 ワード

本書のすべての内容は非公式解釈注釈であり、内容の多くは個人の理解であり、個人の参考に供する.
T 4テンプレートの概要
紹介はさせていただきます
T 4テンプレートは注入式コード言語に類似する、C#に基づいて識別され、現在に類似する.ttテンプレートは、あるタイプに継承され、保存時にIDEによって現在のコードが実行され、出力内容が生成される




  • など5種類のコードタグ
  • 
    
    
    
    
    
    
    
    //     (=)     
    
    

    テーマに直行
    使用主義に基づいて、他の内容を省略し、テンプレートの内容から簡単に紹介する.
    testという名前を作成します.ttのT 4テンプレート
    <#@ template language="C#" debug="false" hostspecific="true"#>
    <#@ include file="EF6.Utility.CS.ttinclude"#>
    <#@ output extension=".cs"#>
    
    //           
    <#="Hello T4" #>
    

    現在のTTテンプレートの保存エラーメッセージ
      		      :            “ArgumentNotNull”	
        	C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\Common7\IDE\Extensions\
    Microsoft\Entity Framework Tools\Templates\Includes\EF6.Utility.CS.ttinclude	1497	
    

    エラーをクリックしてエラー位置を表示
    public class EdmMetadataLoader
    {
        private readonly IDynamicHost _host;
        private readonly System.Collections.IList _errors;
    
        public EdmMetadataLoader(IDynamicHost host, System.Collections.IList errors)
        {
        	/*
        	            “ArgumentNotNull”
        	*/
            ArgumentNotNull(host, "host");
            ArgumentNotNull(errors, "errors");
    
            _host = host;
            _errors = errors;
        }
    	......
    }
    

    このような状況に基づいて、現在のテンプレートにArgumentNotNullメソッドを拡張すると、対応するドキュメントを保存して生成することができます.
    <#@ template language="C#" debug="false" hostspecific="true"#>
    <#@ include file="EF6.Utility.CS.ttinclude"#>
    <#@ output extension=".cs"#>
    
    //           
    <#="Hello T4" #>
    
    <#+
    public static void ArgumentNotNull<T>(T arg, string name) where T : class
    {
        if (arg == null)
        {
            throw new ArgumentNullException(name);
        }
    }
    #>
    

    生成されたtest.cs,ファイル
    
    Hello T4
    
    

    まとめ
    以上のように、現在のtest.tt疑似継承EF 6.Utility.CS.ttincludeまたはそれ自体がその一部であり、EF 6のT 4テンプレートを使用する場合、現在のページでArgumentNotNullメソッドを実装する必要があります.なぜ静的なのかは、タイプ呼び出しと関係があるはずです.ここでは、他の探究はしていません.今後、検討する機会があることを望んでいます.