Я изучаю сериализацию в C#, и у меня есть основы, но теперь я пытаюсь сделать что-то более сложное, и я ищу некоторые рекомендации по лучшей практике (я могу добиться того, что Я хочу, я просто хочу знать «правильный»/самый простой/наименьший код/самый надежный способ его выполнения).Пользовательский сериализатор и наследование в C#
У меня гоночный трек, который состоит из разделов. Каждый тип раздела наследуется от общего класса TrackSection. Класс TrackSection содержит множество данных о геометрии и других вещах, которые я не хочу сохранять, и при вызове конструктора ему нужна некоторая контекстная информация, поэтому я реализовал интерфейс ISerializable и предоставил свои собственные методы для обработки (de) сериализации. Классы, которые унаследованы от TrackSection, намного проще, и я был бы рад, если бы все поля были автоматически сериализованы, но я предполагаю, что, поскольку базовый класс ISerializable, вероятно, им также нужно сделать это вручную (я добавил десериализацию конструктор и вызовите конструктор десериализации базового класса в каждом). Когда дело доходит до сериализации, хотя я не уверен, что делать, я бы ожидал, что метод GetObjectData() ISerializable будет виртуальным, чтобы я мог расширить сериализацию в подклассах. Нужно ли просто реализовать собственный виртуальный метод, который вызывается из базового класса GetObjectData(), или я все это неправильно?
Как я уже сказал, у меня есть работа, но любое лучшее решение или какие-либо общие советы о том, что я делаю, было бы очень полезно, поскольку я не могу не чувствовать, что мое решение немного сложнее, чем нужно быть. Благодарю.
битых особого момента там, конечно, я могу просто пометить метод GetObjectData() как виртуальный в базовом классе ... –