Я создаю xsd на основе документации клиента и всех атрибутов xsd. Я использую xsd.exe для генерации классов из xsd, но я читал, что эти атрибуты не поддерживаются для DataContractSerializer. Почему нет? Означает ли это, что у меня может быть только файл soap + xml с просто элементами? Это невозможно, потому что я не создаю запросы. Есть ли способ указать svcutil для распознавания атрибутов?Почему атрибуты не поддерживаются DataContractSerializer?
ответ
DataContractSerializer был создан с учетом философии «первого кода» - он хорошо отображает большинство языков программирования (записи, списки) и не обрабатывает все XML-конструкции (такие как атрибуты или внешние например, элементы порядка) по соображениям производительности.
WCF (svcutil) по-прежнему поддерживает использование XmlSerializer, который может обрабатывать AFAIK все XML-конструкции. svcutil должен создать контракт с помощью XmlSerializer, если DataContractSerializer не сможет его обработать.
У вас есть пример того, как указать svcutil для использования XmlSerializer? – Xaisoft
Это зависит от опции, которую вы используете svcutil. Например, при создании прокси-кода вы можете указать svcutil/serializer: XmlSerializer. svcutil /? даст вам другое использование. – carlosfigueira
Отлично. Спасибо Карлосу. Иронично, что вы ответили на это. Я только что пришел из вашего блога, прежде чем приехал сюда. – Xaisoft
Вы просто ответили на свой вопрос. –
@ Джон, как? Я не понимаю, почему они не будут поддерживаться. – Xaisoft
Потому что Microsoft так сказала? –