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
  • 相关阅读:
    hdu 1269 迷宫城堡 (并查集)
    hdu 1272 小希的迷宫 (深搜)
    hdu 1026 Ignatius and the Princess I (深搜)
    hdu 1099 Lottery
    hdu 1068 Girls and Boys (二分匹配)
    几个基础数位DP(hdu 2089,hdu 3555,uestc 1307 windy 数)
    hdu 1072 Nightmare (广搜)
    hdu 1398 Square Coins (母函数)
    hdu 1253 胜利大逃亡 (深搜)
    hdu 1115 Lifting the Stone (求重心)
  • 原文地址:https://www.cnblogs.com/Terrylee/p/306222.html
Copyright © 2011-2022 走看看