Tengo un conjunto de objetos de datos de transferencia (por ejemplo, una gran cantidad de reqest, clases de mensaje de respuesta, como MainRequest, MainResponse, ShutDownRequest, ShutDownResponse) Dónde nuevas clases siguen viniendo medida que el proyecto evoluciona. Estas clases se deben (de) serializar desde y hasta varios formatos XML con diferentes XSD públicas. Aparecen nuevos formatos XML a medida que el proyecto evoluciona también.serialización de transferencia de datos objetos en .NET
Mi pregunta aquí es cómo iba a diseñar mis clases e interfaces alrededor estos dos requisitos, especialmente donde debería poner la (de) la lógica real serilization. ¿Debo escribir un servicio estático que pueda tomar las diversas instancias de DTO y sepa cómo serializar cada una de ellas? Cuando lleguen nuevas clases, tengo que tocar cada FormatXSeriaizer y agregar nuevas anulaciones. A medida que aparecen nuevos formatos, solo tengo que escribir nuevas clases 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);
o los propios DTO deben saber cómo hacerlo. Así que lo tengo todo en un solo lugar, para cada clase de DTO. A medida que llegan nuevas clases de DTO, solo tienen que implementar la serialización para los diversos formatos. Como vienen los nuevos formatos, tengo que tocar cada clase de DTO.
myMainRequestInstace.Serialize(FormatTypeEnum type, XmlWriter writer);
¿O hay un enfoque completamente diferente? ¿Debería introducir una interfaz común para la serialización y tener alguna inversión de control, para poder cargar nuevos serializadores de formato en tiempo de ejecución?
¿Qué patrón de diseño puede guiarme aquí?
¿Qué código fuente abierto en el mundo .NET podría estudiar para ver diferentes enfoques sobre este tema?
EDIT: Conozco las técnicas generales de serialización existentes en el marco. Mi pregunta está más orientada al diseño de clases que respeta los dos requisitos: múltiples formatos xml y múltiples DTO (tipos de mensajes) que siguen surgiendo a medida que el proyecto evoluciona.
Proporcione un enlace a "Serializadores XML personalizados" –