如何创建一个封装T4模板文本部分的方法?

而不是这个.tt:

     blah blah blah etc. very complex example with embedded expression like  

我想要一个输出函数,它将返回输出等等等等。:

        blah blah blah etc. very complex example with embedded expression like   

当然上面的语法不正确。 这该怎么做 ?

这是一种使用类function块的替代解决方案<#+ ... #> 。 在通常的语句块中使用lambda表达式<# ... #>允许定义本地函数,如下所示:

 <#@ template language="C#" #> <#@ output extension=".txt" #> <# Action output = () => { #> loooooooong text <#= "message" #> <# }; #> <# output(); #> 

此模板生成以下输出:

 loooooooong text message 

实际上,你与你所拥有的非常接近。 我发现有必要记住模板本质上是一个C#/ VB类,所以当你使用<#+#>块时,你真的只是在类中添加一个成员。

一旦你开始使用<#+#>表示法,你必须继续使用它,因为你仍然在成员级别向类添加东西,而不是添加常规<##>的TransformText()方法标签做。

正确的语法是

 <#+ public void output() { #> blah blah blah etc. very complex example with embedded expression like <#=message#> <#+ } #>