将XML反序列化为C#子类

时间:2016-09-13 02:08:47

标签: c# xml serialization

我的XML:

<?xml version="1.0" encoding="UTF-8"?>
<response id="41cc788a-bc22-4ce0-8e1c-83bf49bbffed">
<message>Successfully processed the request</message>
<payload>Alive</payload>
</response>

我的课程:

[XmlRoot("response")]
[Serializable]
public abstract class ESBResponseBase<T>
{
    [XmlAttribute]
    public string Id { get; set; }

    public string Message { get; set; }

    public T Payload { get; set; }
}

[XmlRoot("response")]
[Serializable]
public class ESBResponseIsAlive : ESBResponseBase<string>
{
}

请注意,如果我在子类上没有这些类,则会抛出异常,因此似乎继承不适用于这些类。

我的序列化代码:

XmlSerializer serializer = new XmlSerializer(typeof (ESBResponseIsAlive));
var esbResponseIsAlive = (ESBResponseIsAlive) serializer.Deserialize(result);

然而,当我序列化我的对象属性时为null。

我认为这很可能是用于序列化的类中的继承问题。可以简单地将基类更改为实际的具体类并使用Generic,但我更喜欢强类型。

1 个答案:

答案 0 :(得分:0)

事实证明,XMLSerializer区分大小写。我的班级现在看起来像以下,它的工作原理。

    [XmlAttribute("id")]
    public string Id { get; set; }

    [XmlElement("message")]
    public string Message { get; set; }

    [XmlElement("payload")]
    public T Payload { get; set; }
相关问题