• 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
  • 相关阅读:
    行政区划代码和关键字提取
    清洗数据之地理纬度
    第三周学习进度
    性能战术在代码中的体现
    第二周学习进度
    淘宝网-质量属性场景
    如何做一名好的软件架构师
    寒假学习笔记16
    寒假学习笔记15
    寒假学习笔记14
  • 原文地址:https://www.cnblogs.com/Terrylee/p/306222.html
Copyright © 2020-2023  润新知