繁体   English   中英

将子类型强制转换为基本/父类型以进行序列化

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM