用父模板生成多个不同子模板(同步生成)
2009-05-11 17:14 宝宝合凤凰 阅读(368) 评论(0) 收藏 举报
=================================================================================
<%@ CodeTemplate Language="C#" TargetLanguage="Text" ResponseEncoding="UTF-8" Src="" Inherits="" Debug="False" Description="Template description here." %>
<%@ Assembly Name="CodeSmith.CustomProperties" %>
<%@ Import Namespace="System.IO" %>
<%@ Property Name="NameSpace" Type="System.String" Default="" Optional="False" Category="" Description="父模板中的属性将决定子模板中的同名属性" %>
<% CodeTemplate ModelObjectTemplate = GetCodeTemplate("NewTemplate2.cst"); %>
<% CodeTemplate ModelObjectTemplate2 = GetCodeTemplate("NewTemplate3.cst"); %>
<%--if(!Directory.Exists(ModelDirectory)) Directory.CreateDirectory(ModelDirectory);--%>
<% RenderFileUsingProperties(@"C:\dir\" + @"table1" + "Info.txt",true,ref ModelObjectTemplate); %>
<% RenderFileUsingProperties(@"C:\dir\" + @"table2" + "Info.txt",true,ref ModelObjectTemplate2); %>
<script runat="template">
#region Get Template
public static CodeTemplate GetCodeTemplate(string TemplateName)
{
CodeTemplate template;
CodeTemplateCompiler compiler = new CodeTemplateCompiler(TemplateName);
compiler.Compile();
if (compiler.Errors.Count == 0)
{
template = compiler.CreateInstance();
}
else
{
System.Text.StringBuilder errorMessage = new System.Text.StringBuilder();
for (int i = 0; i < compiler.Errors.Count; i++)
{
errorMessage.Append(compiler.Errors[i].ToString()).Append("\n");
}
throw new ApplicationException(errorMessage.ToString());
}
return template;
}
#endregion
public void RenderFileUsingProperties(string fullPath, bool overrite, ref CodeTemplate template)
{
if( overrite || (!File.Exists(fullPath)) )
{
CopyPropertiesTo(template);
template.RenderToFile(fullPath, overrite);
}
}
</script>
这是父模板
生成完毕!
---------------------------------------------------------
<%--
Name:
Author:
Description:
--%>
<%@ CodeTemplate Language="C#" ResponseEncoding="UTF-8" TargetLanguage="Text" Src="" Inherits="" Debug="False" Description="Template description here." %>
<%@ Property Name="SampleStringProperty" Type="System.String" Default="SomeValue" Optional="True" Category="Strings" Description="This is a sample string property." %>
<%@ Property Name="SampleBooleanProperty" Type="System.Boolean" Default="True" Optional="False" Category="Booleans" Description="This is a sample boolean property." %>
<%@ Assembly Name="System.Data" %>
<%@ Import Namespace="System.Data" %>
<%@ Property Name="NameSpace" Type="System.String" Default="" Optional="False" Category="" Description=""%>
注意:NameSpace是父,子都有的属性
using System;
using System.Data;
using <%= NameSpace %>.Model;
using <%= NameSpace %>.IDAL;
using <%= NameSpace %>.DALFactory;
namespace <%= NameSpace %>.BLL
====================================================================
<%--
Name:
Author:
Description:
--%>
<%@ CodeTemplate Language="C#" TargetLanguage="Text" Src="" Inherits="" Debug="False" Description="Template description here." %>
<%@ Property Name="SampleStringProperty" Type="System.String" Default="SomeValue" Optional="True" Category="Strings" Description="This is a sample string property." %>
<%@ Property Name="SampleBooleanProperty" Type="System.Boolean" Default="True" Optional="False" Category="Booleans" Description="This is a sample boolean property." %>
<%@ Assembly Name="System.Data" %>
<%@ Import Namespace="System.Data" %>
01010101010101010
0101001001010101010101010101010
9292929299
浙公网安备 33010602011771号