T4模板:double.NaN无法正确渲染

时间:2014-07-17 22:38:23

标签: c# .net t4 template-engine

我有一个T4 template,它会创建一系列从预定义数据集派生的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读取?

2 个答案:

答案 0 :(得分:4)

调用double.NaN.ToString()(T4引擎为了在生成的文件中打印结果而执行的操作)的结果是字符串&#34; NaN&#34; (事实上​​,它是文化特定的)。

如果您需要文字字符串double.NaN,请使用字符串文字:

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

答案 1 :(得分:-1)

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