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
  • 相关阅读:
    C语言运算符优先级和口诀
    跨域问题的解决方案 php
    浅谈跨域攻击及预防
    浅析Websocket--PHP
    linux下的删除目录和文件的方法
    python魔法方法
    双指针
    python常用模块
    python三大器
    对闭包的误区
  • 原文地址:https://www.cnblogs.com/Terrylee/p/306222.html
Copyright © 2011-2022 走看看