Шаблон проектирования для файлов проектов на основе XML в C # - PullRequest
3 голосов
/ 11 сентября 2010

Я занимаюсь разработкой приложения на C #, где основная часть кода находится в библиотеках классов C #.Я хочу, чтобы приложение поддерживало сохранение и загрузку файлов проекта на основе XML и могло определить, произошли ли какие-либо изменения с момента последнего сохранения.

Моя текущая идея проекта:

  1. Каждый класс, которому необходимо хранить настройки, реализует IXmlSerializable.

  2. Приложение поддерживает общий список объектов настроек IXmlSerializable и вызывает ReadXml и WriteXml для сохранения / загрузки файлов проекта.

  3. Каждый класс, в котором хранятся настройки, также поддерживает флаг Modified.

  4. Приложение может проверить, был ли изменен проект, перечислив общий список IXmlSerializable.объекты и проверка флага Modified на каждом.Он также может сбросить флажок Modified на каждом после сохранения.

Это хороший дизайн?Есть ли лучшие?Возможно, мне также нужно извлечь собственный интерфейс из IXmlSerializable, чтобы добавить флаг Modified?

спасибо, Энди

1 Ответ

2 голосов
/ 12 сентября 2010

Я думаю, что концепция, к которой вы стремитесь, - это звук.У меня есть только одна проблема, и, возможно, я слишком много читаю в твою формулировку.

Звучит так, как будто вы ожидаете не выполнять метод WriteXml, если флаг изменения экземпляра не установлен.Если я правильно понял, я думаю, вы обнаружите, что полученный файл не будет содержать неизмененных настроек.XmlSerialization - это все или ничего, он не может обновлять определенные части файла.

Поэтому я думаю, что ваш флаг полезен для определения необходимости сохранения или нет, но если вы решите, что нужно сохранить данныевам нужно сохранить всю структуру.В этом случае нет необходимости реализовывать IXmlSerializable для каждого класса, если только у вас нет особых требований к сериализации, которые не могут быть выполнены иначе.

...