Я считаю, что вы можете реализовать IXMLSeriablizable на ваших объектах. Если я правильно помню, ReadXML (читатель XmlReader) и WriteXML (писатель XmlWriter) из этого интерфейса вызываются автоматически при сериализации / десериализации (CreateSchema или любой другой третий метод не требует реализации).
Предостережение в его реализации заключается в том, что вам теперь может понадобиться реализовать его на всех связанных вложенных объектах. (т. е. если у вас есть объект Department, который содержит объекты User, и вы хотите получить комментарий к отделам, вам потребуется реализовать IXmlSeriablizable как для Department, так и для пользователя). Кроме того, поскольку вы управляете сериализацией напрямую, если вы добавляете новое свойство в класс, вам нужно будет вручную изменить методы IXmlSerializable.
Я обычно реализую IXmlSerializable на своих объектах, так как мне нравится иметь прямой контроль над тем, что сериализуется и как.