CodeGen用户定义的扩展令牌
CodeGen用户定义的扩展令牌
用户定义的扩展令牌是一种特殊的令牌,开发人员可以确定令牌的名称以及在代码生成过程中遇到令牌时要插入的值。
CodeGen支持多种机制,允许通过以下方式实现用户定义的令牌:
如果模板文件依赖于开发人员为特定的用户定义标记提供值,可以将该
依赖关系告诉CodeGen。有关详细信息,请参阅声明用户定义的令牌依赖项。
环境变量
如泛型标记中所述,可以使用<环境:变量>模板文件中的令牌和CodeGen将把从
环境变量获得的值插入到输出流中。
包括文件
在通用标记中也有记录,可以使用<文件:name.ext>模板文件中的令牌和CodeGen
将从外部文件中读取数据并将该数据插入到输出流中。
命令行标记
声明已用已定义标记的一种快速方法是使用-ut命令行选项在命令行上同时指定名
称和值,例如:
codegen –s <structure> -t <template> -ut MODEL_NS=MyApp.Model
可以在命令行上指定多个用户定义的标记,在-ut选项后用空格分隔,例如:
codegen –s <structure> -t <template> -ut MODEL_NS=MyApp.Model VIEW_NS=MyApp.View
如果用户定义的标记值(等号字符后面的部分)包含双引号,则在将值传递给
CodeGen之前,Windows将删除引号。在这种情况下,必须用反斜杠字符转义双引
号字符,如下所示:
-ut MYMESSAGE=\"Hello World\"
默认情况下,在命令行上定义的替换值用户定义标记可能不包含其他标记。如果希
望启用该功能,则必须通过-utpp命令行选项告诉CodeGen将用户定义的标记视为
预处理器标记。
用户定义的令牌文件
如果需要定义多个用户定义的令牌,那么有时可以在用户定义的令牌文件中定义它
们,并通过-u命令行选项命名用户定义的令牌文件。
用户定义的令牌文件示例如下:
;
; User defined tokens for Synergex Inc.
;
<SUPPORT_PHONE>(800) 366-3472</SUPPORT_PHONE>
<SUPPORT_EMAIL>support@synergex.com</SUPPORT_EMAIL>
<WEBSITE>http://www.synergex.com</WEBSITE>
要告诉CodeGen从文件中读取用户定义的标记,可以使用-u命令行选项。例如:
codegen –s
<structure> -t <template> -u
MYTOKENS:<usertokenfile>
然后可以在模板文件中引用用户定义的标记。例如:
display(tt,”Please
call support at <SUPPORT_PHONE>”)
display(tt,” or send an email to <SUPPORT_EMAIL>.”)
声明用户定义的令牌依赖项
如果CodeGen在模板文件中遇到某种格式类似于令牌(即由< and >字符分隔)但未被识别为令牌的内容,则CodeGen将忽略它,并且该文本将保留在创建的输出文件中。为了使CodeGen能够为诸如HTML、XML和XAML等语言或脚本生成代码,这是必需的。
但是,当涉及到用户定义的令牌时,这可能是一个问题,因为如果模板包含的内容是模板开发人员打算作为用户定义的令牌来替换的,但是随后从模板生成代码的人忽略了指定用户定义令牌的来源,则令牌将保留在生成的文件,不会报告任何错误。
为了解决这种情况,模板开发人员可以使用<REQUIRES_USERTOKEN>令牌来声明他们的模板需要声明一个特定的用户定义的令牌,可以在令牌文件(-u)中,也可以在命令行(-ut)中声明。
如果模板声明需要用户定义的标记,但在生成代码时尚未声明该用户定义标记,则CodeGen将显示错误并停止处理该模板。
CodeGen用户定义的扩展令牌的更多相关文章
- PHP 面向对象编程和设计模式 (4/5) - 异常的定义、扩展及捕获
PHP高级程序设计 学习笔记 2014.06.12 异常经常被用来处理一些在程序正常执行中遇到的各种类型的错误.比如做数据库链接时,你就要处理数据库连接失败的情况.使用异常可以提高我们程序的容错特性, ...
- SQLServer更改用户定义的数据库角色
更改用户定义的数据库角色注意事项 需具有以下一项或多项权限或成员身份才能运行此命令: 对角色具有 ALTER 权限 对数据库具有 ALTER ANY ROLE 权限 具有 db_securityadm ...
- SQLServer之创建用户定义的数据库角色
创建用户定义的数据库角色注意事项 角色是数据库级别的安全对象. 在创建角色后,可以使用 grant.deny 和revoke来配置角色的数据库级权限. 若要向数据库角色添加成员,请使用alter ro ...
- Hadoop Hive概念学习系列之hive里的用户定义函数UDF(十七)
Hive可以通过实现用户定义函数(User-Defined Functions,UDF)进行扩展(事实上,大多数Hive功能都是通过扩展UDF实现的).想要开发UDF程序,需要继承org.apache ...
- 【翻译】Flink Table Api & SQL — 用户定义函数
本文翻译自官网:User-defined Functions https://ci.apache.org/projects/flink/flink-docs-release-1.9/dev/tabl ...
- SQL SERVER中用户定义标量函数(scalar user defined function)的性能问题
用户定义函数(UDF)分类 SQL SERVER中的用户定义函数(User Defined Functions 简称UDF)分为标量函数(Scalar-Valued Function)和表值函数(T ...
- 应用C#和SQLCLR编写SQL Server用户定义函数
摘要: 文档阐述使用C#和SQLCLR为SQL Server编写用户定义函数,并演示用户定义函数在T-SQL中的应用.文档中实现的 Base64 编码解码函数和正则表达式函数属于标量值函数,字符串分割 ...
- SQL——用户定义函数
根据用户定义函数返回值的类型,可将用户定义函数分为如下三个类别: (1) 返回值为可更新表的函数 若用户定义函数包含单个 SELECT 语句且该语句可更新,则该函数返回的表也可更新,这样的函数称为内嵌 ...
- JMeter学习-014-JMeter 配置元件实例之 - 用户定义的变量 参数化配置
前文讲述了通过 CSV Data Set Config 实现参数化配置(详情敬请参阅:JMeter学习-010-JMeter 配置元件实例之 - CSV Data Set Config 参数化配置), ...
随机推荐
- 【接口参数解析BUG】SpringMVC接口参数解析
今天遇到一个BUG,前端传递数字数组时,后端使用字符串类型去接收,结果无法接收到,代码如下 问题: GET请求: 前端: configJsonArray:[1,2] 后端: private Strin ...
- 逆向 string.h 函数库 memset、strcpy、strcmp 函数
memset 函数 函数原型:void *memset(void *str, int c, size_t n) 主要功能:复制字符 c(一个无符号字符)到参数 str 所指向的字符串的前 n 个字符 ...
- idea中修改代码大小设置
修改代码大小 控制台字体大小
- spring boot的ComponentScan和ServletComponentScan注解
ComponentScan 这个注解可以扫描带@Component的类.众所皆知,@RestController和@Configuration和@Service和@Configuration等都有带C ...
- Django(18)聚合函数
前言 orm模型中的聚合函数跟MySQL中的聚合函数作用是一致的,也有像Sum.Avg.Count.Max.Min,接下来我们逐个介绍 聚合函数 所有的聚合函数都是放在django.db.models ...
- 面试 CSS篇清除浮动及display:inline-block
一. 在div使用display:inline-block时,HTML代码中的回车换行键会被转化为一个空白符 如图 <style type="text/css"> *{ ...
- Java_集合之一
1.Collection集合 1.1数组和集合的区别[理解] 相同点 都是容器,可以存储多个数据 不同点 数组的长度是不可变的,集合的长度是可变的 数组可以存基本数据类型和引用数据类型 集合只能存引用 ...
- 简单对比vue2.x与vue3.x响应式及新功能
简单对比vue2.x与vue3.x响应式 对响应方式来讲:Vue3.x 将使用Proxy ,取代Vue2.x 版本的 Object.defineProperty. 为何要将Object.defineP ...
- Mac 无密码 SSH 登录服务器
Mac 无密码 SSH 登录服务器,只需要简单三步,不再需要记住账号密码,快速进入服务器 第一步,生成密钥对 在当前用户下创建.ssh目录 mkdir ~/.ssh 使用命令ssh-keygen生成密 ...
- Mycat调优启用useOffHeapForMerge报java.lang.NumberFormatException异常解决(附源码)
come from : https://blog.csdn.net/u013716179/article/details/89886452