有没有办法控制ASMX Web服务中的float / double格式?

时间:2011-03-03 22:59:25

标签: .net web-services xml-serialization asmx

如果我有以下简单类:

[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中的有效双重表示,我只想让它通过网络发送内容作为另一个。

2 个答案:

答案 0 :(得分:2)

一种简单的方法是将强类型属性标记为忽略,并仅为XML序列化提供另一个字符串属性。在其getter中,您可以根据需要应用格式,并在setter中将其解析回来。

答案 1 :(得分:1)

将使用与the XML Schema xs:double datatype兼容的表示形式通过网络发送双精度。

任何明智的客户都应该能够解释这一点。如果你有一些特定的理由想要一个不同的表示,唯一现实的解决方案是使用一个字符串,格式化你想要的方式。