use*_*291 5 c# t4 visual-studio
而不是这个.tt:
<#@ 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#>
Run Code Online (Sandbox Code Playgroud)
我想要一个输出函数,它将返回输出等等等等.:
<#@ 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#>
<#}
#>
Run Code Online (Sandbox Code Playgroud)
当然上面的语法不正确.这该怎么做 ?
这是不使用类功能块的替代解决方案<#+ ... #>.在通常的语句块中使用lambda表达式<# ... #>允许定义本地函数,如下所示:
<#@ template language="C#" #>
<#@ output extension=".txt" #>
<# Action output = () => { #>
loooooooong text <#= "message" #>
<# }; #>
<# output(); #>
Run Code Online (Sandbox Code Playgroud)
此模板生成以下输出:
loooooooong text message
Run Code Online (Sandbox Code Playgroud)
实际上,你与你所拥有的非常接近.我发现有必要记住模板本质上是一个C#/ VB类,所以当你使用<#+#>块时,你真的只是在类中添加一个成员.
一旦你开始使用<#+#>表示法,你必须继续使用它,因为你仍然在成员级别向类添加东西,而不是添加常规<##>的TransformText()方法标签做.
正确的语法是
<#+ public void output() { #>
blah blah blah etc. very complex example with embedded expression like <#=message#>
<#+ }
#>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1938 次 |
| 最近记录: |