如果我有以下简单类:
[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中的有效双重表示,我只想让它通过网络发送内容作为另一个。
答案 0 :(得分:2)
一种简单的方法是将强类型属性标记为忽略,并仅为XML序列化提供另一个字符串属性。在其getter中,您可以根据需要应用格式,并在setter中将其解析回来。
答案 1 :(得分:1)
将使用与the XML Schema xs:double datatype兼容的表示形式通过网络发送双精度。
任何明智的客户都应该能够解释这一点。如果你有一些特定的理由想要一个不同的表示,唯一现实的解决方案是使用一个字符串,格式化你想要的方式。