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