zoukankan      html  css  js  c++  java
  • CodeSmith使用总结--创建一个基础模板

    问:为什么要用CodeSmith

    答曰:因为我懒的写。

    Codesmith是一款非常不错的懒人工具,我也经常会用到,因为它在“重复代码”方面能够节省我们很多时间,并且解除了我们重复繁琐并且乏味的“码功”。

    因为我只讲使用方法,所以他的工作原理我就很不负责的不解释了。这是第一篇,我们就来创建一个最简单的模板--填入类名生成一个空类。

    关键语句一:

    <%@ Template Language="C#" TargetLanguage="C#" Description="这是一个测试模板" %>

    这条语句定义了当前文档是一个模板

    Template 指定了这一条语句是模板定义语句。就像一个标记一样,指定这条语句要定义一个模板了。

    Language 定义了编写这个模板要用到的语言。模板中你总得用个Iffor之类的语句吧,这些语句的格式是哪种语言的就是他这里定义的了

    TargetLanguage 则定义了要显示的内容的语言,有了它才有代码的高亮,比如你生成的是C#的代码,但是你要用VB代码的关键字来高亮显示这肯定不好看啦

    定义好了模板,我们就开始定义一个可以让我们输入的属性,

    <%@ Property Name="NameSpace" Type="System.string" Default="GodFinal" Category="命名空间" Description="类的命名空间"%>

    这条语句为我们创建了一个可用于输入字符串的属性。

    Property 指明了当前语句是一条属性语句,它定义了属性字段,我们可以在生成模板的时候传一些特定的值。如图:

     

    Name 是要显示的属性名。

    Type 是属性值的类型,它来自于System命名空间或者CodeSmith自定义的命名空间,CodeSmith会自动导入一些默认的命名空间如下图:

     

    Default是属性的默认值,如果你不想填,那就会显示默认的了。

    Category 为属性所在的分类,相同分类的属性会显示在一个列表中。

    定义好了这些,接下来我们就可以写要输出的代码了,直接输出的文字直接写就可以,要用到属性值的地方需要加<%=  %>的取值标记,类似<%=NameSpace %>就是取了NameNameSpace的属性的值。

    最终模板:

     

    <%-- 

    Name: 测试模板1

    Author: GodFinal

    Description: 这是第一个测试模板

    blog: http://www.cnblogs.com/GodFinal

    --%>

    <%--Language 为模板编写语言 TargetLanguage 为模板标记语言,就是显示高亮的语言--%>

    <%@ Template Language="C#" TargetLanguage="c#" Description="这是一个测试模板" %>

     

    <%--模板属性,就是生成之前我们要传入的值。--%>

    <%@ Property Name="NameSpace" Type="System.string" Default="GodFinal" Category="命名空间" Description="类的命名空间"%>

    <%@ Property Name="ClassName" Type="System.string" Default="Model" Category="类别名" Description="类名" %>

    using System;

     

    namespace <%=NameSpace %> <%--调用定义好的属性--%>

          /// <summary> 

          /// <%=ClassName %>类的模板

          /// </summary> 

          public class <%=ClassName %> 

          { 

                public <%=ClassName %>() 

                {} 

          } 

    }

    运行结果:

     

    using System;

     

    namespace GodFinal 

          /// <summary> 

          /// Model类的模板

          /// </summary> 

          public class Model 

          { 

                public Model() 

                {} 

          } 

    }

  • 相关阅读:
    ACM——Points on Cycle
    ACM——A Simple Problem with Integers(线段树的精华版)
    HDU2524——矩形A+B
    ACM——Hero(类似贪心算法)
    用N个三角形最多可以把平面分成几个区域——acm
    ACM——敌兵布阵(经典的线段树)
    ACM——I Hate It(线段树的进化版)
    ACM——今年暑假不AC
    ACM题目Who's in the Middle
    内部排序算法
  • 原文地址:https://www.cnblogs.com/GodFinal/p/3510544.html
Copyright © 2011-2022 走看看