Szeregowanie obiektów transferu danych w .NET

Mam zestaw obiektów do przesyłania danych (np. Wiele wymagających klas odpowiedzi, takich jak MainRequest, MainResponse, ShutDownRequest, ShutDownResponse)Gdzie przychodzą nowe klasy w miarę rozwoju projektu. Te klasy muszą być (de) serializowane zi doróżne formaty XML z różnymi publicznymi XSD. Wraz z rozwojem projektu pojawiają się nowe formaty XML.

Moje pytanie tutaj brzmi: jak zaprojektowałbym moje klasy i interfejsy dookołate dwa wymagania, szczególnie tam, gdzie powinienem umieścić rzeczywistą logikę (de) serilizacji. Czy powinienem napisać usługę statyczną, która może zająć różne instancje DTO i wiedzieć, jak serializować każdy z nich? Kiedy przychodzą nowe klasy, muszę dotknąć każdego FormatXSeriaizer i dodać nowe przesłonięcia. Wraz z pojawieniem się nowych formatów muszę po prostu napisać nowe klasy 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);

lub czy DTO powinni wiedzieć, jak to zrobić. Więc mam to wszystko w jednym miejscu - dla każdej klasy DTO. Wraz z pojawieniem się nowych klas DTO, muszą one tylko wdrożyć serializację dla różnych formatów. Wraz z pojawieniem się nowych formatów muszę dotknąć każdej klasy DTO.

myMainRequestInstace.Serialize(FormatTypeEnum type, XmlWriter writer);

Czy istnieje inne podejście? Czy powinienem wprowadzić wspólny obszar do serializacji i mieć pewne odwrócenie kontroli, aby móc ładować nowe serializery formatu w czasie wykonywania?

Jaki wzór może mnie tu poprowadzić?

Jaki otwarty kod źródłowy w świecie .NET mógłbym studiować, aby zobaczyć różne podejścia do tego tematu?

EDYCJA: Wiem o ogólnych technikach serializacji istniejących w ramach. Moje pytanie jest bardziej ukierunkowane na projektowanie klas, które respektuje dwa wymagania: wiele formatów xml i wiele DTO (typy wiadomości), które przychodzą wraz z rozwojem projektu.

questionAnswers(4)

yourAnswerToTheQuestion