T4模板:双模板.NaN没有正确呈现

本文关键字:NaN 模板 T4 | 更新日期: 2023-09-27 18:13:20

我有一个T4模板,它创建一系列从预定义数据集派生的static readonly变量。

如果我传递double.NaN作为构造函数参数,模板输出呈现为 NaN ,而不是 double.NaN ,如我所期望的。

模板的相关部分为:

<#= double.IsNaN(element.MeltingPoint) ? double.NaN : element.MeltingPoint #>

会导致编译错误:
The name 'NaN' does not exist in the current context

如果我手动更改代码为double.NaN,那么它编译得很好。

如何将输出强制读取为字面值字符串double.NaN ?

T4模板:双模板.NaN没有正确呈现

调用double.NaN.ToString()的结果(T4引擎这样做是为了在生成的文件中打印结果)是字符串"NaN"(事实上,它是特定于区域性的)。

如果您想要字符串字面值double.NaN,那么使用字符串字面值:

<#= double.IsNaN(element.MeltingPoint) ? "double.NaN" : element.MeltingPoint.ToString() #>

尝试使用Double.NaN。虽然我怀疑T4引擎也可能会选择这个