Какой метод сериализации XML я должен использовать для публичного API? - PullRequest
4 голосов
/ 19 ноября 2010

Я пишу программу, которая создает древовидную структуру, составленную из классов, которые наследуются от абстрактного Node класса.В мою программу встроено несколько разных типов узлов.Тем не менее, я также хочу позволить более опытным пользователям иметь возможность ссылаться на мою библиотеку и писать свои собственные производные Node.Эти подключаемые библиотеки затем загружаются при запуске моего приложения через Assembly.Load().Таким образом, все потенциальные типы Node, используемые моим приложением, не будут известны до времени выполнения.

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

Учитывая это, есть ли причины, по которым я должен использовать один механизм сериализации поверх другого?

1 Ответ

2 голосов
/ 19 ноября 2010

Если сериализация и десериализация будут происходить только в вашем приложении, и если не требуется, чтобы кто-либо еще мог читать сериализованные данные, то формат сериализации не влияет на API: насколько пользователь API касается, вы будете сериализовать в непрозрачный файл и десериализовать из того же.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...