【代码生成器】codesmith-基本语法(三)

CodeSmith 的 C# 语法与 Asp.net MVC2 的模板语法很像;对于 web 前端来讲其实也和 ejs 很像。

声明

编写模板代码第一句就是在声明:告诉 CodeSmith 你的开发模板的语言是 C#,生成的目标代码是 HTML,最后是这个模板的描述信息。

1
<%@ Template Language="C#" TargetLanguage="HTML" Description="描述" %>

<% %>

C# 代码需要写在 <% %> 标签内

1
2
3
4
<% string message = "hello world"; %>
<%
string name = "rocyuan";
%>

<%= %>

要输出到模板的变量值需要写在 <%= %> 标签内

1
2
<%= message %>
<%= name %>

需要写一大段 c# 代码时可以使用 <script></script> 标签,如需要封装函数功能等…。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<script runat="template">
public string SnakeFormatHump(string snakeName, bool isBig = false)
{
string newSnakeName = "";
string[] snakeNames = snakeName.Split("_".ToCharArray());
for(int i = 0; i < snakeNames.Length; i++)
{
string nameSplitFormat = snakeNames[i].Substring(0, 1).ToUpper() + snakeNames[i].Substring(1);
if(isBig || i > 0)
{
snakeNames[i] = nameSplitFormat;
}
newSnakeName += snakeNames[i];
}
return newSnakeName;
}
</script>

外部输出的变量(属性管理中管理的变量)

有些变量,我们需要在生成的时候通过属性管理面板输入的,这个时候就需要声明外部变量了

1
<%@ Property Name="name" Type="System.String" Default="xxx项目" Optional="False" Category="分类1" Description="项目名称" %>
  • Name:要声明的变量的名字
  • Type:要声明的属性的类型
  • Default:当没有通过属性面板输入值时,使用的默认值
  • Optional:是否允许为空(即不输入)
  • Category:声明的这个属性的类别(CodeSmith 软件中的属性面板中显示的类别名称)
  • Description:说明描述

#include 引入其他模板文件

有些模板文件是专门存放工程中的公共工具方法的,这时在其他模板文件中就可以使用 #include 来引入工具方法模板,使用公共定义的方法了

1
<!-- #include file="common\\utils.cst" -->

Assembly 添加程序集

使用类库所在的程序集时,需要在模板顶部添加所依赖的程序集引用

1
2
<%@ Assembly Name="SchemaExplorer" %>
<%@ Assembly Name="System.Net.Http" %>

Import 导入命名空间

使用一些 .Net 类库,或者 CodeSmith 提供的类库时,需要在模板顶部导入该类库的命名空间,比如:
使用 IO 操作时,需要导入 System.IO 命名空间
使用 JSON 数据处理时,需要导入 CodeSmith.Engine.Json.Linq 命名空间

1
<%@ Import Namespace="System.IO" %>

注释

CodeSmith 中可以使用 <%– –%> 作为注释,也可以使用 c# 的注释(c#的注释必须在 c#语法标签中使用 <% %><script></script> 中)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<%--
注释注释注释注释注释
--%>

<%
// c#注释
/* c#注释 */
// ...
%>

<script>
// c#注释
/* c#注释 */
// ...
</script>