ViewModelの自動生成を考える

以前、Androidアプリで恒常的に使用するXMLからPOJO DTOへマッピングするクラスをAPT(Annotation Processing Tool)を利用して自動生成するエントリを書いたことがある。

APTでテンプレートメソッドパターンを生成する その1
APTでテンプレートメソッドパターンを生成する その2
APTでテンプレートメソッドパターンを生成する その3
APTでテンプレートメソッドパターンを生成する その4

前回のエントリでも書いたがViewModelは同じような実装が多くなる、つまりはテンプレートパターンを適用できるので、インフラストラクチャで可能であれば自動生成するのが好ましい。しかしJavaと違って.NET C#で同様のプリプロセッサがあるのだろうか? (私が使っていた当時は無かった)

T4 Text Template

コード生成と T4 テキスト テンプレート

T4 Text TemplateはVisual Studioで使用することができるテンプレートエンジンであり、テンプレートからテキストファイルを生成することができる。テキストファイルとあるが当然C#VB.NETソースコードやconfigやXMLファイルを生成することもできるしそのような使い方をするのが普通らしい。これならAPTと同様の用途で使えそうだ。

内部に記述できる要素としては、テンプレートエンジンに対して設定を行うディレクティブと式があり、<# 〜 #>や<#= 〜 #>で括った部分に命令や言語(C#VB.NET)によるロジックや関数(<#+ 〜 #>)を置くことが出来、ちょっと見ではRubyのERBやJava JSPのようである。

MVVMでWPF/Silverlightアプリケーションを組もうという気運が高まった2009年以降、この方法に取り組んでいる素晴らしい先輩開発者の方々が既にいらっしゃるようなので、そちらを参考にしていろいろと考えてみよう。

Declarative Dependency Property Definition with T4 + DTE | Colin Eberhardt's Adventures in .NET
ViewModelのコードの自動生成機能とアイテムテンプレートを作ってみた - かずきのBlog@Hatena