单声道.向模板传递参数的TextTemplateing
本文关键字:参数 TextTemplateing 声道 单声道 | 更新日期: 2023-09-27 17:57:52
我尝试用以下命令将参数(foo)传递给现有模板(MyTemplate.tt):
TextTransform.exe-a=foo!bar-o Output.txt MyTemplate.tt
MyTemplate.tt:
<#@ template language="C#" #>
<#@ import namespace="System.IO" #>
<#
this.Write(foo);
#>
由于参数"foo"不存在,此命令失败。如何正确传递此参数?
MonoDevelop的TextTransform.exe的参数与Microsoft的参数相匹配,这些参数在此处进行了说明。
不幸的是,这些参数并没有作为代码中的变量公开,而是作为自定义指令处理器的参数。要直接从代码访问它们,必须设置hostspecific="true"
并通过Host.ResolveParameterValue (paramName)
访问它们。
但是,通过在模板的基类上实现IDynamicMetaObjectProvider
并重写BindGetMember
以解析Host.ResolveParameterValue
中的参数,您可以使用动态对象来使示例工作。
谢谢,这对我来说很好:
TextTransform.exe-a=foo!bar-o Output.txt MyTemplate.tt
MyTemplate.tt:
<#@ template language="C#" hostspecific="true" #>
<# string temp = this.Host.ResolveParameterValue("", "", "foo");#>
<#
this.Write(temp);
#>
Output.txt:
bar
我还将了解IDynamicMetaObjectProvider。