[英]cast child type as base/parent type for serialisation
我正在使用没有属性的子类型,以便在以特定方式使用对象时将流畅的验证规则放在对象上。
所以
public class User
{
public string name {get;set;}
}
public class myUser : User{}
但是,当对象到达我的序列化器时,我希望它将其序列化为基本类型。 因此,“用户”是根元素,而不是“ myUser”。
为什么不简单地在序列化之前将其返回给User?
在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"
,不确定这是否会对反序列化过程造成问题。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.