Подтвердить что ты не робот

Игнорировать порядок полей в DataContractSerializer

При десериализации DataContractSerializer требует не только совпадения имени элемента, но также и того, что он находится в определенном порядке по отношению к другим элементам.

Мое приложение таково, что каждое поле может быть уникально идентифицировано по его имени. Поэтому мне хотелось бы, чтобы XML файл содержал элементы в любом порядке и чтобы десериализатор продолжал работать.

Можно ли настроить DataContract следующим образом?

Вводный абзац в Заказ участника данных предполагает, что заказ выполняется принудительно, но я не нашел способ сделать его необязательным.

Последующий вопрос: Простое управление версиями файлов данных с помощью DataContractSerializer

4b9b3361

Ответ 1

Нет, это необязательно. Он необязательно явно указывать порядок, но в противном случае порядок определяется основными правилами, к которым вы привязаны (базовые типы сначала, алфавит,...).

Вводный параграф просто означает, что вам не всегда нужно знать или заботиться о заказе - например, если вы используете сгенерированный прокси.

Если вы используете DataContractSerializer для десериализации файла, лучшим решением, о котором я могу думать, было бы использование XSLT для преобразования его в правильный порядок перед десериализацией.

Если вы вызываете веб-сервис (для которого был создан DataContractSerializer), вам лучше придерживаться порядка в контракте.