(сильно переработано)
На основании комментариев представлен сценарий:
- есть два типа, которые бывают подклассами в C #
- при сериализации, мы просто хотим просто поменять их местами - без кода наследования (т. Е. Вы можете сохранить как
Web2PdfEntity
и загрузить как Web2PdfServer
или v.v.)
Это немного отличается от нормального варианта использования, когда унаследованные типы ожидают наследования во время сериализации (которая изменяет данные), а несвязанные типы взаимозаменяемы, пока подходит контракт.
Есть несколько способов приблизиться к этому; одна небольшая проблема заключается в том, что по умолчанию не смотрит на унаследованные свойства, чтобы избежать дублирования. Вы могли бы рекламировать их, но это немного неловко. Лично я думаю, что мне хотелось бы просто сказать, что делать во время запуска приложения:
var metaType = RuntimeTypeModel.Default.Add(typeof(Web2PdfServer), false);
metaType.Add(1, "Title").Add(2, "CUrl");
Теперь ваш существующий код Serializer
будет корректно обрабатывать Web2PdfServer
, включая два указанных свойства.