几乎DCG的每一次升级都是为了带给最终用户更方便的使用,这一次也不例外。那么这次DCG又带来了什么创新呢?让我们来看看,DCG的变动如下:
添加了变动保留功能。代码生成器的优点是省时省力功能强,所以我们选择它,但代码生成器却也不是没有缺点的,它的缺点也很大,那就是每次输出都会将上一次输出后的变动冲掉,这使我们使用者很伤脑筋,也正是这一点让我们不太敢使用代码生成器生成第二遍。为了克服以上原因,作者再次升级DCG,扩展了它的功能,通过在输出文件保留信息的方式使之能再次生成时保留修改。示例如下:
<%@ Template Language="vb" %>
<%@ Parameter Name="ns" DataType="String" %>
<%@ Parameter Name="oldFilePath" DataType="String" %>
<% DCG.ReservedSpace.BeginSymbol = "/*+*/" %>
<% DCG.ReservedSpace.EndSymbol = "/*-*/" %>
<% DCG.ReservedSpace.OldFilePath = oldFilePath %>
<% DCG.ReservedSpace.GenerateDefaultValue = (DCG.ReservedSpace.OldFilePath Is Nothing) %>
namespace <%=ns%> {
public <%-virtual-%> class Base {
public void DoSomething() {
<%-
//TODO
<%"algo"%%>
-%>
}
}
}
通过DCG.ReservedSpace来设置变动保留功能,保留空间在模板中的语法为<%-reserved space-%>,其中reserved space为默认值,也就是,当DCG.ReservedSpace.GenerateDefaultValue为真时会输出默认值,当其为假时会输出空白或者上一次的修改。
%>字符串在标签中的输出。在以前的版本中,想在一个标签中(<% %> <%= %>等)输出%>不是一件容易的事,因为它代表着一个标签的结束,但现在通过在标签中用%%>来代表的%>的方式就可以输出%>了。同样在标签外想输出<%要用<%%来代替。
以上为所有的DCG版本1.4.1.1的变动,完全向下兼容。