Ho una serie di oggetti di dati di trasferimento (ad esempio un sacco di reqest, classi di segnalazione di risposta, come MainRequest, MainResponse, ShutDownRequest, ShutDownResponse) Dove nuove classi continuano a venire come il progetto si evolve. Queste classi devono essere (de) serializzate da e verso vari formati XML con diversi XSD pubblici. I nuovi formati XML arrivano man mano che il progetto si evolve.serializzazione Transfer Data Objects in .NET
La mia domanda qui è come vorrei progettare le mie classi e interfacce intorno questi due requisiti, soprattutto dove devo mettere la logica serilization reale (de). Devo scrivere un servizio statico che possa prendere le varie istanze DTO e sappia come serializzare ciascuna di esse? Quando arrivano nuove classi, devo toccare ogni FormatXSeriaizer e aggiungere nuove sostituzioni. Man mano che arrivano nuovi formati, devo solo scrivere nuove classi 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 gli stessi DTO dovrebbero sapere come farlo. Quindi ho tutto in un unico posto - per ogni classe DTO. Quando arrivano nuove classi DTO, devono solo implementare la serializzazione per i vari formati. Quando arrivano nuovi formati, devo toccare ogni classe DTO.
myMainRequestInstace.Serialize(FormatTypeEnum type, XmlWriter writer);
Oppure esiste un approccio completamente diverso? Dovrei introdurre un inteface comune per la serializzazione e avere qualche inversione di controllo, quindi potrei caricare serializzatori di nuovo formato in fase di runtime?
Quale modello di progettazione può guidarmi qui?
Quale codice open source nel mondo .NET posso studiare per vedere approcci diversi su questo argomento?
MODIFICA: Conosco le tecniche di serializzazione generali esistenti nel framework. La mia domanda è più orientata verso un design di classe che rispetti i due requisiti: più formati xml e più DTO (tipi di messaggi) che continuano ad evolversi man mano che il progetto si evolve.
Si prega di fornire un collegamento a "Serializzatori XML personalizzati" –