ダウンロード サンプルファイル (37.5 KB)
<#+ メンバ定義 #>
<#+ と #>で囲んだ部分はフィールドやメソッドの定義となり、<#~#>や<#=~#>の中から参照(利用)できます。
<#@ template debug="false" hostspecific="false" language="C#" #>
<#@ output extension=".cs" #>
using System;
class Hello {
static public void say(string name) {
Console.WriteLine("Hello, {0}",name);
<# foreach ( string fruit in basket ) { #>
<#= fruit #>();
<# } #>
}
<# foreach ( string fruit in basket ) { #>
static private void <#= fruit #>() {
Console.WriteLine("<#= i_like(fruit)#>");
}
<# } #>
}
<#+
string[] basket = { "apple", "banana", "cherry" };
static string i_like(string item) {
return string.Format("I like {0}", item.ToUpper());
}
#>
このテンプレートからは、以下のコードが生成されます。
using System;
class Hello {
static public void say(string name) {
Console.WriteLine("Hello, {0}",name);
apple();
banana();
cherry();
}
static private void apple() {
Console.WriteLine("I like APPLE");
}
static private void banana() {
Console.WriteLine("I like BANANA");
}
static private void cherry() {
Console.WriteLine("I like CHERRY");
}
}
ここで1つご注意。<#+~#>によるメンバ定義は必ずテンプレートの末尾に置かなくてはなりません。ただし、<#+~#>を末尾に置いたテンプレートを<#@ include file="..." #>によって差し込むことは許されています。上記のテンプレートは以下のように書くことができます。
using System;
class Hello {
static public void say(string name) {
Console.WriteLine("Hello, {0}",name);
<# foreach ( string fruit in basket ) { #>
<#= fruit #>();
<# } #>
}
<# foreach ( string fruit in basket ) { #>
static private void <#= fruit #>() {
Console.WriteLine("<#= i_like(fruit)#>");
}
<# } #>
}
<#+
static string i_like(string item) {
return string.Format("I like {0}", item.ToUpper());
}
#>
<#@ template debug="false" hostspecific="false" language="C#" #>
<#@ output extension=".cs" #>
<#@ include file="Body.tt.include" #>
<#+
string[] basket = { "apple", "banana", "cherry" };
#>
この記事は参考になりましたか?
- この記事の著者
-
επιστημη(エピステーメー)
C++に首まで浸かったプログラマ。Microsoft MVP, Visual C++ (2004.01~2018.06) "だった"りわんくま同盟でたまにセッションスピーカやったり中国茶淹れてにわか茶...
※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です
この記事は参考になりましたか?
この記事をシェア
