提问人:Qudus 提问时间:4/17/2023 最后编辑:Qudus 更新时间:4/19/2023 访问量:64
在 .NET 中生成代码模板时,如何使用具有非布尔类型的条件语句
How to use conditional statements with non boolean types when generating code templates in .NET
问:
如果提供,我希望生成此代码块。问题是它永远不会生成是否提供。条件语句似乎只适用于参数。就我而言,是类型.MyParameter
MyParameter
boolean
MyParameter
string
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,但条件仍然始终计算为 .MyParameter
defaultValue
""
template.json
true
答:
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 设置为空字符串。这就是问题所在。
评论