CodeSmith 引擎處理範本時使用多個核心物件,CodeTemplate(類似 ASP.NET Page 類別)是與引擎直接互動的主要介面。
GetFileName():覆寫預設輸出檔名Render():修改輸出內容或輸出至多檔案Events:在引擎處理流程中插入程式碼Response:直接寫入輸出檔案<%@ Template Language="C#" TargetLanguage="Text" %>
<%@ Property Name="ClassName" Type="System.String" Default="ClassName" %>
<script runat="template">
public override string GetFileName() {
return ClassName + ".cs";
}
</script>
<%@ CodeTemplate Language="C#" TargetLanguage="Text" %>
<%@ Import Namespace="System.IO" %>
<script runat="template">
public override void Render(TextWriter writer) {
StreamWriter file1 = new StreamWriter(@"test1.txt", true);
this.Response.AddTextWriter(file1);
StreamWriter file2 = new StreamWriter(@"test2.txt", true);
this.Response.AddTextWriter(file2);
base.Render(writer); // 必須呼叫基類,否則無預設輸出
file1.Close(); file2.Close();
}
</script>

當屬性預設值無法從字串轉換時,覆寫此方法自訂轉換邏輯,引擎處理每個屬性時會呼叫。