代碼生成器 CodeSmith 的使用(一)


由於在項目中經常要會用到數據庫的 CRUD 操作(增、刪、改、查),而且還使用的是orm 框架將數據庫表名和表中的的字段映射成相應的類屬性。如果把大量的時間用到手工輸入數據庫表中的字段,除了能練習打字速度外,對軟件工程師來說,對編程能力的提高似乎沒有什麼意義,爲了提高開發效率,節省時間,我工作之餘花了大量的時間來學習研究CodeSmith 在生成數據庫表中字段的模板的設計,在此記下自己的 CodeSmith 學習筆記。

  這是新建的一個 CsharpTemplate.cst 模板文件的內容

<%-- 
Name:
Author: 
Description: 
--%>
<%@ Template Language="C#" TargetLanguage="Text" %>
<%@ Property Name="SampleStringProperty" Default="SomeValue" Type="System.String" %>
<%@ Property Name="SampleBooleanProperty" Default="True" Type="System.Boolean" %>
My static content here.
My dynamic content here: "<%= SampleStringProperty %>"
Call a script method: <%= SampleMethod() %>
<% if (SampleBooleanProperty) { %>
My conditional content here.
<% } %>
<script runat="template">
// My methods here.
public string SampleMethod()
{
  return "Method output.";
}
</script>

  開頭的是註釋, 表示文件的作者,名稱和功能描述

  接下來   <%@ Template Language="C#" TargetLanguage="Text" %> 就是模板的說明內容

 <%@ Property Name="SampleStringProperty" Default="SomeValue" Type="System.String" %>
 這是屬性類型的設置 它會生成一個 System.String 類型的字段  默認的值被設置成 SomeValue  Name是屬性模板的名稱,這個可以自命名, 模板的東西通常會放在 <% %> 裏面,是成對出現的。比如要輸出 System.String 類型的值,就要這麼寫
 My dynamic content here: "<%= SampleStringProperty %>", 注意在<%> 前有個=號, 前面的 ”My dynamic content here“ 完全可以根據實際的需要來修改

 在 模板中寫代碼片段時,也是放在 <%> 中的, 像例子中的這個 <% if (SampleBooleanProperty) { %>
My conditional content here.
<% } %> 是一個 if語句判斷, 如果是 true ,就會輸出 My conditional content here.,注意: 花括號{ 也要放在 <%>內 花括號與花括號不能直接相鄰,如果是 一個函數, 則要放在 <script runat="template"> </script>中, 此時的花括號可以相鄰,書寫方式同在C#中的 書寫方式一致。

這段代碼會生成這樣一個輸出:

My static content here.
My dynamic content here: "SomeValue"
Call a script method: Method output.
My conditional content here.


 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章