Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# T4模板If Else语句是否写出对象而不是文本?_C#_T4 - Fatal编程技术网

C# T4模板If Else语句是否写出对象而不是文本?

C# T4模板If Else语句是否写出对象而不是文本?,c#,t4,C#,T4,我试图获取If-else语句,以根据从循环传入的对象计算值。这个模板一直有效,直到我在if-else块中添加了它,它说它不能用作语句。想法 <#@ template language="C#" #> <#@ assembly name="System.Core" #> <#@ import namespace="System.Linq" #> <#@ import namespace="System.Text" #> <#@ import n

我试图获取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; };
<#
    }
#>
    }
}

名称空间
{
公共课
{
公共{get;set;};
}
}

if-else正在检查列是否为可空字段,如果是,则在C#中使其数据类型也为可空。

我自己能够解决这个问题,刚刚看到一篇文章,让我想到尝试.Write方法,然后bam它可以工作!!以防其他人遇到类似的问题

public <# if (c.IsNullable && c.DataType != "string" && c.DataType != "string []") { this.Write(c.DataType + "?"); } else { this.Write(c.DataType); } #> <#= c.ColumnName #> { get; set; };
public{get;set;};

如果
的then/else部分中的表达式不会生成代码。你应该这样写:

public <# if (c.IsNullable && c.DataType != "string" && c.DataType != "string []") { #>
    <#= c.DataType + "?" #>
<# } else { #> 
    <#= c.DataType #>
<# } #> <#= c.ColumnName #> { get; set; };

有趣的是,我无法编译?:运算符,但可能只是我编错了。只是学习T4。我也会尝试这个方法来验证:)它很有效!我将把它标记为答案,更像是解决方案和语法,而不是我自己的发现。
<#= (c.IsNullable && c.DataType != "string" && c.DataType != "string []") ? (c.DataType + "?") : c.DataType #>