如何为被引用的T4模板设置参数?
如何为被引用的T4模板设置参数?
哈哈,这个问题我之前也踩过坑!其实给被引用的T4模板传参数很简单,咱们结合你给出的例子一步步来解决:
首先看你的Hello.t4,它已经通过<#@ parameter #>指令定义了Name参数,接下来只需要在主模板HelloWorld.tt里做两处修改就能顺利传值:
- 在主模板里先声明同名的参数(这一步是为了让主模板和被引用模板的参数上下文对齐,避免编译报错)
- 在引用模板之前,给这个参数赋值
修改后的HelloWorld.tt代码如下:
Testing text templates, <#@ parameter type="System.String" name="Name" #> <# this.Name = "World"; #> <#@ include file="Hello.t4" #>
这样生成的输出就会是:
Testing text templates,
Hello World!
原理其实很好理解:当你用<#@ include #>引入带参数的模板时,这个参数会成为主模板生成的代码类的公共属性。咱们在主模板里先声明参数,再通过this.Name赋值,最后引入模板,模板就能读取到这个预先设置好的值了。
如果之后需要传不同的内容,只要修改this.Name = "xxx"里的字符串就行,非常灵活!
备注:内容来源于stack exchange,提问作者Valentino Miori
相关产品推荐
相关产品推荐

