После некоторых исследований я понял, что BinaryFormatter поддерживает все, что я искал.
BinaryFormatter может использовать суррогаты до
- Обеспечиваетвозможность сериализации типа, который изначально не был предназначен для сериализации.
- Предоставляет способ сопоставления одной версии типа другой версии другого типа.
Можно также сопоставить десериализацию от типа A к типу B (другое имя класса, пространство имен и / или имя сборки), используя SerializationBinder .
Насколько я могу судить, это делает возможнымдля рефакторинга классов, которые сериализуются, и для обеспечения обратной совместимости при внесении критических изменений, которые не поддерживаются только версиями.
Ссылка: http://www.diranieh.com/NETSerialization/BinarySerialization.htm
Редактирование: На заметку сторон, рефакторинг полей (имя или тип) все еще является проблемой, как обсуждалось в Переименование полей, а затем десериализация в C # .В настоящее время я изучаю protobuf-net, чтобы лучше решить эту проблему в будущем.