我正在使用没有属性的子类型,以便在以特定方式使用对象时对该对象放置流畅的验证规则。
所以
public class User
{
public string name {get;set;}
}
public class myUser : User{}
然而,当对象到达我的序列化器时,我希望它将它序列化为基类型。所以'用户'是根元素而不是'myUser'。
答案 0 :(得分:1)
为什么不在执行序列化之前将其强制转换回用户?
在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
,其中包含要插入的基本类型(在本例中为User),以及您想要允许的其他类型的数组。这些类型必须从基类型派生,看起来似乎。
输出:
<?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"
,不确定这是否会导致反序列化过程出现问题。