Может ли DataContractSerializer быть настроен так, чтобы игнорировать ошибки в файле, а не просто полностью потерпеть неудачу? - PullRequest
0 голосов
/ 26 марта 2011

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

Мои древовидные структуры все еще будут функционировать, если компоненты отсутствуют. Есть ли какой-то способ сказать DataContractSerializer пропустить данные, у которых возникла проблема с десериализацией, и продолжить работу, а не просто завершить работу с первой возникшей проблемой?

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

1 Ответ

0 голосов
/ 23 февраля 2012

Я думаю, что вы ищете IExtensibleDataObject.Таким образом, любые непредвиденные элементы будут считаны в словарь имя-значение, поддерживаемый внутри, и даже могут быть сериализованы позже.Для получения справки см. Следующие ресурсы.

Сообщение в блоге - Расширяемость WCF - Другие расширения сериализации

Контракты на прямую передачу данных

Управление версиями данных

...