Как генерировать xs:Date в параметре WCF OperationContract

Запись звонка в Android может быть тяжелой работой, потому что не все версии Android поддерживают запись звонка.

Вопрос 1

Вопрос 2

Вопрос 3

16
задан Joe 28 April 2009 в 17:10
поделиться

4 ответа

Unfortunately WCF doesn't support the xs:Date type. You'd have to create your own "DateOnly" struct, like:

<DataContract()> _
public struct DateOnly
   <DataMember()> public Month as Integer
   <DataMember()> public Day as Integer
   <DataMember()> public Year as Integer
end struct
1
ответ дан 30 November 2019 в 23:00
поделиться

Теперь, когда это привлекло мое внимание, я создал новое предложение в Connect, на Пожалуйста, полностью поддержите xs: Date для параметров только для даты и DataMembers . Я оценил это на четыре звезды (важно).

Если кто-то, читающий это, считает, что это важно (или не согласен), то, пожалуйста, используйте Connect, чтобы проголосовать или прокомментировать это.

5
ответ дан 30 November 2019 в 23:00
поделиться

Вы указали требование иметь xs: Date в качестве параметра операции. Дело в том, что есть формальный способ указать такие требования: WSDL. Если бы я делал это, я бы использовал подход WSDL First . Начните с WSDL, который определяет нужный вам контракт, включая xs: date в интерфейсе, где бы вы ни находились. Затем сгенерируйте служебную заглушку с помощью svcutil.exe. Не забудьте передать / serializer: xmlSerializer.

3
ответ дан 30 November 2019 в 23:00
поделиться

Сериализатор по умолчанию WCF (DataContractSerializer) не поддерживает его. Но XmlSerializer его поддерживает.

1 - Добавьте атрибут [XmlSerializerFormat] в свой контракт ...

[XmlSerializerFormat]
[ServiceContract]
public interface IMyContract
{
   MyType GetData();
}

2 - В типе DataContract добавьте [XmlElement (DataType = "date")] к члену.

public class MyType
{
     [XmlElement(DataType = "date")]
     public DateTime BirthDate {get; set;}
}

Надеюсь, это поможет

1
ответ дан 30 November 2019 в 23:00
поделиться
Другие вопросы по тегам:

Похожие вопросы: