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
  • 相关阅读:
    通向全栈之路——(4)nginx反向代理配置
    通向全栈之路——(3)node环境搭建
    通向全栈之路——(2)服务器安全设置
    通向全栈之路——(1)服务器新增用户及授权
    window.location.href跳转至空白页
    webpack 1.x 学习总结
    win7下使用apache ab 比较测试node与 tomcat
    Enum,Int,String的互相转换
    读写appSettings配置节方法
    SC命令
  • 原文地址:https://www.cnblogs.com/Terrylee/p/306222.html
Copyright © 2011-2022 走看看