[英]T4 Template If Else statement to write out object instead of text?
我試圖獲取If else語句來計算基於從循環傳入的對象的值。 這個模板一直有效,直到我添加到if else塊中,它說它不能用作語句。 思考?
<#@ template language="C#" #>
<#@ assembly name="System.Core" #>
<#@ import namespace="System.Linq" #>
<#@ import namespace="System.Text" #>
<#@ import namespace="System.Collections.Generic" #>
<#@ import namespace="CookieCutterDT" #>
<#@ import namespace="CookieCutterBL.DT_Template" #>
namespace <#= NameSpace #>
{
public class <#= ClassName #>
{
<#
foreach(ColumnDT c in Columns)
{#>
public <# if (c.IsNullable && c.DataType != "string" && c.DataType != "string []") { c.DataType + "?"; } else { c.DataType; } #> <#= c.ColumnName #> { get; set; };
<#
}
#>
}
}
if else是檢查列是否為可空字段,如果是,則使其數據類型在C#中也可以為空。
if
的then / else部分中的表達式不會生成代碼。 你應該這樣寫:
public <# if (c.IsNullable && c.DataType != "string" && c.DataType != "string []") { #>
<#= c.DataType + "?" #>
<# } else { #>
<#= c.DataType #>
<# } #> <#= c.ColumnName #> { get; set; };
或者,使用條件運算符?:
更短的替代方案是:
<#= (c.IsNullable && c.DataType != "string" && c.DataType != "string []") ? (c.DataType + "?") : c.DataType #>
我能夠自己解決這個問題,剛剛看到一篇文章給了我一個嘗試.Write方法的想法,並且它的工作原理! 以防其他人遇到類似的問題。
public <# if (c.IsNullable && c.DataType != "string" && c.DataType != "string []") { this.Write(c.DataType + "?"); } else { this.Write(c.DataType); } #> <#= c.ColumnName #> { get; set; };
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.