L2ST4の応用例

「CSharpDataClasses.tt」と「L2ST4.ttinclude」のコード量は合わせて約1300行とボリュームがあります。そのためカスタマイズを行うのは容易ではないかもしれません。そこで「CSharpDataClasses.tt」を50行程度に簡素化したコード例を以下に示します。

簡略化したテンプレート




 !String.IsNullOrEmpty(s));
manager.StartHeader();
#>
//---ヘッダです---
using System;

//---名前空間です---
namespace 
{
    //---クラスです---
    public class {
        //---プロパティです---

          { get; set; }

    }
}

//---フッタです---

このテンプレートではプロパティだけを持つシンプルなクラスを生成できます。

生成されたコード(クラス毎に別ファイル)

コードの説明

上記のコードでは、Managerクラスを使って、出力を制御しているところがポイントになります。最初は複雑に感じるかもしれませんが、モデルの情報(クラス、プロパティ、関連等)を取得してアプトプットする流れを把握すれば、カスタマイズは可能だと思います。

最後に

T4では、C#、VB.NET、SQL、XML、設定ファイルといった様々な種類のテキストを生成できます。今回のサンプルではLINQ to SQLのモデルを生成元のデータとして使いましたが、直接SQL Serverのスキーマを読み取ったり、Excelや設定ファイルを使ったりしてコードを生成することもできます。もちろんデータ周りに限らずビジネスロジックやUI周りのコードを生成することもできます。 また、Visual T4 Editor Community edition(Visual Studioのエディタでカラー表示)やT4 Toolkit(アイテムテンプレートとユーティリティ)といった便利なツールもあります。 同じようなコードを繰り返し書いていると感じたら、T4テンプレートを利用して自動化してみてはいかがでしょうか。