T4メモ

T4テンプレートについて軽く調査したのでメモ

Visual Studio搭載のT4テンプレートエンジンの3通りの活用方法 - seraphyの日記

Visual Studio × T4 × 属性で Entity コード大量生成 - Qiita

基本は上つ2つのページに全て書いてある。

あとメタプログラミング.NET本。

(ランタイムテンプレートのサンプルがほぼないのが残念)

 

テンプレートの種類

テンプレートの種類は2種類

  1. テキストテンプレート(設計時テキストテンプレート)
  2. ランタイムテンプレート(実行時テンプレート)

テキストテンプレート(設計時テキストテンプレート)

ソリューションのビルドプロセスの過程でコンパイル、変換される。

.cs以外にも.txtや.cpp等々を生成可能。

コマンドやデータの追加に不随する処理の追加等を自動生成することに使用できそう。

後は、C#で書いたModel(データ)の定義からC++等の別の言語の定義や処理の自動生成とか。

ランタイムテンプレート(実行時テンプレート)

実行時にテンプレートに記述されている変数等を評価して文字列(String)を生成する。

データのフォーマット変換とかに使える感じかなと。

データの変換部分をテンプレート化しておいて、任意のデータ読み込んで、

テンプレートで自動生成されたpartialクラスに読み込んだデータ突っ込んで、

TransformTextするといったような感じでしょうか。

あとはRazorでやっているようなこととかをこっちに置き換えると、

間違った記述をしたときにコンパイルエラーにしてくれるので便利。

その他

csproj.user を作るための T4 テンプレート | kazuk は null に触れてしまった

こちらにもおもしろいT4の書き方が載っていたのでめも

よく訓練されたT4使いは 「何を元に作るか」 「何を作るか」 だけを考える。

<# Generate( (何を元に作るか), (o)=>{#> 何を作るか <#} ); #> と書く。

 

メタプログラミング.NET

メタプログラミング.NET