Почему бы просто не привести его обратно к пользователю перед выполнением сериализации?
После некоторых копаний в XmlSerializer, это делает это для меня:
var myUser = new myUser();
myUser.Name = "Test name";
var serializer = new XmlSerializer(typeof(User), new Type[] {myUser.GetType()});
serializer.Serialize(Console.Out, myUser);
То, что здесь делается, - это создание XmlSerializer
с базовым типом (в данном случае - с пользователем), в который вы хотите выполнить приведение, а также с массивом других типов, которые вы хотите разрешить. Казалось бы, эти типы должны быть производными от базового типа.
Выход:
<?xml version="1.0" encoding="ibm850"?>
<User xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org 2001/XMLSchema" xsi:type="myUser">
<Name>Test name</Name>
</User>
Обратите внимание на xsi:type="myUser"
, но не уверен, что это вызовет проблемы в процессе десериализации.