zoukankan      html  css  js  c++  java
  • CodeSmith实用技巧(五):利用继承生成可变化的代码

     CodeSmith生成可变化的代码,其实是先利用CodeSmith生成一个基类,然后自定义其它类继承于该类。当我们重新生成基类时CodeSmith不要接触继承的子类中的代码。看下面的这段模版脚本:
    <%@ CodeTemplate Language="C#" TargetLanguage="C#" Description="Base class generator." %>
    <%@ Property Name="ClassName" Type="System.String" Description="Name of the class." %>
    <%@ Property Name="ConstructorParameterName" Type="System.String" Description="Constructor parameter name." %>
    <%@ Property Name="ConstructorParameterType" Type="System.String" Description="Data type of the constructor parameter." %>
    class <%= ClassName %>
    {
        
    <%= ConstructorParameterType %> m_<%= ConstructorParameterName %>;
     
        
    public <%= ClassName %>(<%= ConstructorParameterType %> <%= ConstructorParameterName %>)
        
    {
            m_
    <%= ConstructorParameterName %> = <%= ConstructorParameterName %>
        }

    }

    执行该模版并输入如下数据:

    该模版生成的代码可能如下:

     1class Account
     2{
     3    int m_balance;
     4 
     5    public Account(int balance)
     6    {
     7        m_balance = balance
     8    }

     9
    10}

    11
    12

    把生成的文件保存为Account.cs文件。这时我们可以编写第二个类生成Check.cs文件代码:

    1class Checking : Account
    2{
    3    public Checking : base(0)
    4    {
    5    }

    6}

    现在如果需要改变Account Balance的类型为浮点型,我们只需要改变ConstructorParameterType属性为float,并重新生成Account.cs文件即可而不需要直接在Account.cs中进行手工修改,并且不需要修改Check.cs文件的任何代码。

    支持TerryLee的创业产品Worktile
    Worktile,新一代简单好用、体验极致的团队协同、项目管理工具,让你和你的团队随时随地一起工作。完全免费,现在就去了解一下吧。
    https://worktile.com
  • 相关阅读:
    RIO包 健壮的I/O函数代码
    Upgrading WebLogic Application Environments --官方文档
    JAVA的静态代理与动态代理比较--转载
    指向函数的指针--转
    c之指针与数组(1)
    weblogic 异常常见处理方法
    Redis: under the hood---转载
    A GDB Tutorial with Examples--转
    The best career advice I’ve received --转载
    redis 大数据插入
  • 原文地址:https://www.cnblogs.com/Terrylee/p/306222.html
Copyright © 2011-2022 走看看