T4メモ
T4テンプレートについて軽く調査したのでメモ
Visual Studio搭載のT4テンプレートエンジンの3通りの活用方法 - seraphyの日記
Visual Studio × T4 × 属性で Entity コード大量生成 - Qiita
基本は上つ2つのページに全て書いてある。
あとメタプログラミング.NET本。
(ランタイムテンプレートのサンプルがほぼないのが残念)
テンプレートの種類
テンプレートの種類は2種類
- テキストテンプレート(設計時テキストテンプレート)
- ランタイムテンプレート(実行時テンプレート)
テキストテンプレート(設計時テキストテンプレート)
ソリューションのビルドプロセスの過程でコンパイル、変換される。
.cs以外にも.txtや.cpp等々を生成可能。
コマンドやデータの追加に不随する処理の追加等を自動生成することに使用できそう。
後は、C#で書いたModel(データ)の定義からC++等の別の言語の定義や処理の自動生成とか。
ランタイムテンプレート(実行時テンプレート)
実行時にテンプレートに記述されている変数等を評価して文字列(String)を生成する。
データのフォーマット変換とかに使える感じかなと。
データの変換部分をテンプレート化しておいて、任意のデータ読み込んで、
テンプレートで自動生成されたpartialクラスに読み込んだデータ突っ込んで、
TransformTextするといったような感じでしょうか。
あとはRazorでやっているようなこととかをこっちに置き換えると、
間違った記述をしたときにコンパイルエラーにしてくれるので便利。
その他
csproj.user を作るための T4 テンプレート | kazuk は null に触れてしまった
こちらにもおもしろいT4の書き方が載っていたのでめも
よく訓練されたT4使いは 「何を元に作るか」 「何を作るか」 だけを考える。
<# Generate( (何を元に作るか), (o)=>{#> 何を作るか <#} ); #> と書く。
- 作者: Kevin Hazzard,Jason Bock,長尾高弘
- 出版社/メーカー: アスキー・メディアワークス
- 発売日: 2013/08/29
- メディア: 大型本
- この商品を含むブログ (1件) を見る