Почему атрибуты не поддерживаются DataContractSerializer?

Я создаю xsd на основе документации клиента, и все xsd имеют атрибуты. Я использовал xsd.exe для создания классов из xsd, но я прочитал, что атрибуты не поддерживаются для DataContractSerializer. Почему бы и нет? Означает ли это, что у меня может быть файл soap+xml только с элементами? Это невозможно, потому что я не создаю запросы. Есть ли способ указать svcutil для распознавания атрибутов?


person Xaisoft    schedule 20.05.2011    source источник
comment
Вы только что ответили на свой вопрос.   -  person John Saunders    schedule 20.05.2011
comment
@Джон, как? Я не понимаю, почему они не будут поддерживаться.   -  person Xaisoft    schedule 20.05.2011


Ответы (1)


DataContractSerializer был создан с учетом философии «сначала код» — он хорошо сопоставляется с большинством языков программирования (записи, списки) и не обрабатывает все конструкции XML (такие как атрибуты или неупорядоченные элементы, например) по соображениям производительности.

WCF (svcutil) по-прежнему поддерживает использование XmlSerializer, который может обрабатывать AFAIK все конструкции XML. svcutil должен создать контракт с помощью XmlSerializer, если DataContractSerializer не может его обработать.

person carlosfigueira    schedule 20.05.2011
comment
у вас есть пример того, как указать svcutil для использования XmlSerializer? - person Xaisoft; 20.05.2011
comment
Это зависит от варианта, который вы используете svcutil. Например, при создании прокси-кода можно указать svcutil /serializer:XmlSerializer. свкутил /? даст вам другие обычаи. - person carlosfigueira; 20.05.2011
comment
Большой. Спасибо, Карлос. Забавно, что вы ответили на это. Я только что пришел из вашего блога, прежде чем я пришел сюда. - person Xaisoft; 20.05.2011