Меня слегка смущает утверждение, что XmlSerializer не может сериализовать динамически сгенерированные типы. XmlSerializer генерирует свой собственный код сериализации динамически, а также во время построения, поэтому не должно быть никаких проблем с сериализацией вашего типа.
Возможно, вам потребуется декорировать ваши динамические классы соответствующими атрибутами, в зависимости от того, что вы генерируете (например, производные классы), но не должно быть никаких проблем с использованием XmlSerializer в описанной вами ситуации.
Если бы вы могли публиковать подробности о проблемах, которые дает вам XmlSerializer, я могу помочь вам разобраться, в чем проблема.
Кроме того, я верю, что автогенерация кода - это вообще благословение. Мне часто приходилось возвращаться в класс, чтобы исправить одну или все функции копирования / вставки / сохранения / загрузки, просто потому, что кто-то забыл обновить их при добавлении новой переменной. Код сохранения / загрузки является кодом пластины котла. Пусть компьютеры напишут это.