Есть ли способ контролировать форматирование float / double в ASMX Web Services? - PullRequest
2 голосов
/ 04 марта 2011

Если у меня есть следующий простой класс:

[Serializable]
public class Test
{
    public double a = 0.0000001;
}

Когда я возвращаю объект этого типа из .NET ASMX Web Service, ответ будет:

<Test>
  <a>1E-07</a>
</Test>

, что, возможно, не совпадение, поведение по умолчанию 0.0000001.ToString(), хотя, по крайней мере, с ToString, я могу указать параметры форматирования (в этом случае я не желает экспоненциальной записи. По правде говоря, я даже не уверен, как бы подключить это к XmlSerializer, у меня был полный контроль над ним, тем более изнутри атрибутов, которые я мог бы поместить в возвращаемый объект.

Редактировать : Я все еще очень хотел бы сохранить свойство в том, что я на самом деле применяю это к строго типизированным. И 0,0000001, и 1E-7 являются действительными двойными представлениями в .NET, я просто хочу, чтобы он отправлял данные по проводам, как и другие.

Ответы [ 2 ]

2 голосов
/ 04 марта 2011

Простой подход состоит в том, чтобы пометить строго типизированное свойство как игнорируемое и предоставить другое строковое свойство только для сериализации XML.В его геттере вы можете применять форматирование по своему усмотрению и анализировать его обратно в сеттере.

1 голос
/ 04 марта 2011

Двойник будет отправлен по проводной связи с использованием представления, совместимого с XML-схемой xs: тип данных double .

Любой разумный клиент должен уметь это интерпретировать. Если у вас есть какая-то конкретная причина для желания другого представления, единственное реалистичное решение - использовать строку, отформатированную так, как вы хотите.

...