• 关于CodeSmith主模板与子模板同时从一个基类继承后的参数传值问题(提供模板下载)


    标题好像有点绕啊,

    下面说一下场景吧,我有两个CodeSmith的模板Entity.cst与AllEntity.cst文件,它们同时都继承自CommonSqlCode.cs这个文件

    代码如下:

    <%@ CodeTemplate Language="C#" ResponseEncoding="UTF-8" Src="CommonSqlCode.cs" TargetLanguage="C#" Inherits="XH.CommonSqlCode" Debug="False" Description="Template description here." %>

    Entity.cst用来生成单个的实体

    AllEntity.cst调用Entity.cst实现批量生成实体

    在CommonSqlCode.cs文件中我定义了一个公共的属性NameSpace.

    开始我的理解是:运行AllEntity.cst的话,只发在AllEntity.cst中给NameSpace赋一次值,在Entity.cst中就可以访问到AllEntity.cst中设置的值,因为CommonSqlCode.cs是共用的嘛.

    实际的结果是:Entity.cst中是没法取到AllEntity.cst中给NameSpace设置的值,必须在AllEnity.cst调用Entity.cst的时候,显示的传给Entity.cst.

    可以这样写this.CopyPropertiesTo(subTemplate)或subTemplate.SetProperty("NameSpace", this.NameSpace)

    呵,不知道是不是只有我一个人这样理解去了.

    最后发一个我这几天学习CodeSmith写的一个类似Petshop结构的模板,除了UI层,其它基本上都有

     https://files.cnblogs.com/builderman/codesmith_petshop_demo.rar

    解压后在Template目录中有所有的模板,

    可以直接运行ALL.cst来生成所有的代码,

    也可以运行ALL开头的其它模板来生成某一部分文件,

    或者运行非ALL开头的模板来生成单个的代码

    直接打开解决方案可以查看用模板生成的代码

    欢迎大家批评指正

  • 相关阅读:
    Something broke! (Error 500)——reviewboard
    linux内核--自旋锁的理解
    I.MX6 mkuserimg.sh hacking
    I.MX6 DNS 查看、修改方法
    I.MX6 android mkuserimg.sh
    I.MX6 AW-NB177NF wifi HAL 调试修改
    I.MX6 wpa_supplicant_8 编译问题
    I.MX6 MAC Address hacking
    I.MX6 MAC地址修改
    I.MX6 U-boot imxotp MAC address 写入
  • 原文地址:https://www.cnblogs.com/builderman/p/1690006.html
Copyright © 2020-2023  润新知