反序列化多个不同的派生类型

时间:2012-12-26 22:32:53

标签: c# .net xml web-services deserialization

在这里遇到一些问题。我有一些xml从第三方服务回来,看起来像这样(简化)

<Root>
    <Response>
        <Record></Record>   
    </Response>
    <Response>
        <Record></Record>   
    </Response>
</Root>

每条记录都有可能成为不同类型的对象,而单条xml消息可能有多个响应

我的课程看起来像这样

public class Response
{
    [XmlElement(typeof(DerivedRecord1))]
    [XmlElement(typeof(DerivedRecord2))]
    public BaseRecord Record { get; set;}
}

public class BaseRecord { }
public class DerivedRecord1 : BaseRecord { }
public class DerivedRecord2 : BaseRecord { }

当我在反序列化后查看Record对象时,它会在两个响应中返回null。

现在,当我在基类上使用XmlInclude元素而不是属性上的XmlElement属性时,Record是基类而不是派生类型。

我在这里做错了什么?

0 个答案:

没有答案