在 .NET 中生成代码模板时,如何使用具有非布尔类型的条件语句

How to use conditional statements with non boolean types when generating code templates in .NET

提问人:Qudus 提问时间:4/17/2023 最后编辑:Qudus 更新时间:4/19/2023 访问量:64

问:

如果提供,我希望生成此代码块。问题是它永远不会生成是否提供。条件语句似乎只适用于参数。就我而言,是类型.MyParameterMyParameterbooleanMyParameterstring

public class MyClass
{
    #if (MyParameter)
    public string MyParameter { get; set; }
    ---#endif
}

我试着这样做

public class MyClass
{
     #if (!string.IsNullOrEmpty(MyParameter))
     public string MyParameter { get; set; }
     ---#endif
}

但与第一个不同的是,即使为 null 或空,也总是会生成。我已将参数设置为 in,但条件仍然始终计算为 .MyParameterdefaultValue""template.jsontrue

C# .NET Visual Studio 模板

评论


答:

2赞 DavidG 4/17/2023 #1

您可以将计算设置添加到文件中,并在源中使用该设置。例如:template.json

"MyParameter": {
    "type": "parameter",
    "datatype": "text",
    "defaultValue": ""
    ...
},
"IsMyParameterEmpty": {
    "type": "computed",
    "value": "MyParameter == \"\""
}

然后在 C# 源代码中:

public class MyClass
{
    #if (!IsMyParameterEmpty)
    public string MyParameter { get; set; }
    ---#endif
}

评论

0赞 Qudus 4/17/2023
我试过了这个,但即使提供或未提供 MyParamter,条件也始终被评估为真实。当未提供 MyParameter 时,它会使用 MyParameter 键生成整行,如下所示 然而,如果未提供 MyParameter,我只希望它消失public string MyParameter {get; set;}
1赞 DavidG 4/17/2023
我需要查看您的代码才能提供任何进一步的建议。我已经测试了上述内容,它有效。
0赞 Qudus 4/17/2023
我错过了将 MyParameter 的 defaultValue 设置为空字符串。这就是问题所在。