【发布时间】:2011-03-03 22:59:24
【问题描述】:
如果我有以下简单的类:
[Serializable]
public class Test
{
public double a = 0.0000001;
}
当我从 .NET ASMX Web 服务返回此类型的对象时,响应将是:
<Test>
<a>1E-07</a>
</Test>
这也许不是巧合,是0.0000001.ToString() 的默认行为,尽管至少使用ToString,我可以指定格式参数(在这种情况下,我不想要指数符号. 事实上,我什至不确定如何将它连接到 XmlSerializer 我可以完全控制它,更不用说仅仅从我可以放置在返回对象上的属性中了。
编辑:我仍然非常希望将属性保留在我实际将其应用于强类型的内容中。 0.0000001 和 1E-7 在 .NET 中都是有效的双重表示,我只想让它像另一个一样通过网络发送东西。
【问题讨论】:
-
如果这个值验证了模式,那么你的客户为什么会关心呢?他们肯定可以消费任何有效的价值吗?如果他们不能,那么您需要更改架构以匹配他们可以处理的内容。
-
业务用户与开发人员。除了 WS 端点,我们还有将数据转储到 CSV 文件等的工具。两者的需求之间通常没有太大的脱节,但我正在尝试将视觉美学与开发实用主义相协调。
-
“0.0000001 和 1E-7 在 .NET 中都是有效的双重表示”——但对于 WS,重要的是要有一个有效的 xs:double 表示。
-
根据双精度(w3.org/TR/xmlschema-2/#double)和十进制(w3.org/TR/xmlschema-2/#decimal)的xsd文档,进一步定义了双精度的词法表示,情况仍然如此。
标签: .net web-services xml-serialization asmx