Мне нужно использовать Java Webservice, который имеет элементы типа Date и Time.
Пример из wsdl:
...
<xsd:element name="fromTime" nillable="true" type="xsd:time" />
<xsd:element name="dateOfInspection" type="xsd:date" />
...
При использовании Webservice с помощью Add Service Reference Visual Studio 2008 генерирует следующий код:
[System.Xml.Serialization.SoapElementAttribute(DataType="time", IsNullable=true)]
public System.Nullable<System.DateTime> fromTime { ... }
[System.Xml.Serialization.SoapElementAttribute(DataType="date")]
public System.DateTime dateOfInspection { ... }
Отправка сообщения приводит к ошибке отражения с внутренним исключением:
'time' - недопустимое значение для свойства SoapElementAttribute.DataType. Свойство может быть указано только для примитивных типов.
При удалении атрибутов DataType = "time" и DataType = "date" все работает. Но изменение сгенерированного кода является анти-шаблоном. Так есть ли другой способ заставить это работать?
Update:
Проблема существует, только если элементы даты или времени имеют значение NULL!
Я сообщил об ошибке на сайте Microsofts connect. Если у вас такая же проблема, вы можете проголосовать за нее здесь: https://connect.microsoft.com/VisualStudio/feedback/details/534453/consuming-java-webservice-with-nullable-date-and-time-elements-in-wcf-generates-invalid-datatype-attributes
Обновление 2:
Microsoft подтвердила это ошибкой и непонятно, чтобы быть исправленной.
Обновление 3:
Я проверил с VS2010 и все еще генерирует неправильный код. Btw, мы закончили модификацию сгенерированного кода...