C# 如何创建封装T4模板文本部分的方法?
而不是这个。tt:C# 如何创建封装T4模板文本部分的方法?,c#,visual-studio,t4,C#,Visual Studio,T4,而不是这个。tt: <#@ template debug="false" hostspecific="true" language="C#" #> <#@ import namespace="System.IO" #> <#@ output extension=".txt" #> <#@ assembly name="System"#> <# message = "hello world" ; #> blah blah blah e
<#@ template debug="false" hostspecific="true" language="C#" #>
<#@ import namespace="System.IO" #>
<#@ output extension=".txt" #>
<#@ assembly name="System"#>
<# message = "hello world" ; #>
blah blah blah etc. very complex example with embedded expression like
<#=message#>
诸如此类。非常复杂的示例,带有嵌入式表达式,如
我想要一个输出函数,可以返回输出等等:
<#@ template debug="false" hostspecific="true" language="C#" #>
<#@ import namespace="System.IO" #>
<#@ output extension=".txt" #>
<#@ assembly name="System"#>
<#output();#>
<#+ output() { #>
blah blah blah etc. very complex example with embedded expression like
<#=message#>
<#}
#>
诸如此类。非常复杂的示例,带有嵌入式表达式,如
当然,上面的语法是不正确的。如何做到这一点?事实上,你已经非常接近你所拥有的了。 我发现记住模板本质上是一个C#/VB类很有帮助,所以当你使用一个块时,你实际上只是在类中添加一个成员 一旦开始使用符号,您就必须继续使用它,因为您仍然在成员级别向类添加内容,而不是像常规标记那样添加TransformText()方法 正确的语法应该是
<#+ public void output() { #>
blah blah blah etc. very complex example with embedded expression like <#=message#>
<#+ }
#>
诸如此类。非常复杂的示例,带有嵌入式表达式,如
这是一种替代解决方案而不是使用类功能块
。
在常用语句块
中使用lambda表达式可以定义如下局部函数:
<#@ template language="C#" #>
<#@ output extension=".txt" #>
<# Action output = () => { #>
loooooooong text <#= "message" #>
<# }; #>
<# output(); #>
loooooooong text message