У меня есть веб-сервис с методом, который принимает параметр типа decimal. Этот параметр должен иметь 2 позиции с плавающей запятой.
Как я могу это гарантировать?
public void callMyWS(decimal d1) {
...
decimal d2 = Ensure2FloatingPointPlaces(d1);
proxy.MyWSmethod(d2);
}
.
MyWSmethod(decimal myDD) { ... }
У MyWSmethod есть проверка для двух мест. Итак:
Если «d1» равен 1,00 => все в порядке.
Если «d1» равно 1 => проверка не пройдена.
Основная проблема в том, что d1 является целочисленным.
Я читал что-то о суффиксе "м". Но все примеры с константными числами, что не очень полезно ... Как вы можете видеть, цель конвертировать в строку не стоит.
Давайте посмотрим на xsd:
<xs:element name="MyWSmethod" type="tns:MyWSmethodType"/>
...
<xs:complexType name="MyWSmethodType">
<xs:sequence>
...
<xs:element name="myDecimal" type="myDecimalType"/>
...
</xs:sequence>
</xs:complexType>
...
<xs:simpleType name="myDecimalType">
<xs:restriction base="xs:decimal">
<xs:pattern value="[\-]?[0-9]+\.[0-9]{2}"/>
</xs:restriction>
</xs:simpleType>
Таким образом, при сборке клиента веб-сервиса из xsd у вас будет ограничение на 2 числа с плавающей запятой.