По сути, первоначальная проблема заключается в том, что мне нужно заставить сериализованное логическое значение равным 0 или 1. Я нашел решение реализовать IXmlSerializable, что я и сделал. К сожалению, класс, который я пытаюсь сериализовать, генерирует код из схемы и содержит XmlTypeAttribute. Когда я пытаюсь (де) сериализовать объект с помощью XmlSerializer, созданного обычным способом (new XmlSerializer(type)
), он выдает это исключение:
System.InvalidOperationException: Only XmlRoot attribute may be specified for the type ______ Please use XmlSchemaProviderAttribute to specify schema type.
Сразу приходят на ум два варианта:
1) удалить атрибут в сгенерированном коде.
Это изменение необходимо будет вносить каждый раз, когда код будет перегенерирован.
2) Используйте объект XmlAttributeOverrides при создании сериализатора для удаления атрибута. Для этого потребуется, чтобы остальная часть кода «знала», что ему нужно переопределить этот атрибут. Кроме того, выбрасываемое исключение не дает абсолютно никакой подсказки относительно того, что нужно сделать, чтобы исправить это.
Оба варианта вроде воняют. Есть ли третий вариант?