Сериализация объектов передачи данных в .NET

У меня есть набор объектов передачи данных (например, много запросов, классов ответных сообщений, таких как MainRequest, MainResponse, ShutDownRequest, ShutDownResponse)Где новые классы продолжают прибывать по мере развития проекта, Эти классы должны быть (де) сериализованы от и доразличные форматы XML с разными публичными XSD.Новые форматы XML появляются по мере развития проекта.

Мой вопрос здесь заключается в том, как я буду проектировать свои классы и интерфейсы вокругэти два требованияособенно, где я должен поставить фактическую (де) сериализацию логики. Должен ли я написать статический сервис, который может принимать различные экземпляры DTO и знает, как сериализовать каждый из них? Когда приходят новые классы, я должен коснуться каждого FormatXSeriaizer и добавить новые переопределения. По мере появления новых форматов мне просто нужно написать новые классы FormatXSerializer.

FormatASerializer.Serialize(XmlWriter writer, MainResponse r);
FormatASerializer.Serialize(XmlWriter writer, ShutDownResponse r);
FormatBSerializer.Serialize(XmlWriter writer, MainResponse r);
FormatBSerializer.Serialize(XmlWriter writer, ShutDownResponse r);

или сами ОТО знают, как это сделать. Так что у меня все это в одном месте - для каждого класса DTO. По мере появления новых классов DTO им просто нужно реализовать сериализацию для различных форматов. По мере появления новых форматов я должен коснуться каждого класса DTO.

myMainRequestInstace.Serialize(FormatTypeEnum type, XmlWriter writer);

Или есть совершенно другой подход? Должен ли я ввести общий интерфейс для сериализации и иметь некоторую инверсию управления, чтобы я мог загружать сериализаторы нового формата во время выполнения?

Какой шаблон дизайна может привести меня сюда?

Какой открытый исходный код в мире .NET можно изучить, чтобы увидеть разные подходы к этой теме?

РЕДАКТИРОВАТЬ: я знаю об общих методах сериализации, существующих в рамках. Мой вопрос больше ориентирован на дизайн классов, который учитывает два требования: несколько форматов xml и несколько DTO (типов сообщений), которые продолжают поступать по мере развития проекта.

Ответы на вопрос(4)

Ваш ответ на вопрос