XML Serialize子类,到相同的xml名称(没有类型名称)

时间:2016-03-01 11:35:00

标签: c# inheritance xml-serialization xmlserializer

我有一个基类(例如)

[XmlType("address")]
[XmlInclude(typeof(AddressUK))]
[XmlInclude(typeof(AddressEurope))]
public class AddressBase
{
     // No serialized properties
}

正如您所看到的,我已将其装饰为序列化为“地址”的元素。并期望一些子类:

public class AddressUK : AddressBase
{
    [XmlElement("company")]
    [AddressField(AddressFieldType.Organisation, Required = true, MaxSize = 60)]
    public string Company { get; set; }
}

public class AddressEurope : AddressBase
{
    [XmlElement("company")]
    [AddressField(AddressFieldType.Organisation, Required = true, MaxSize = 40)]
    public string Company { get; set; }
}

我拥有这些子类的唯一原因是我可以使用自定义AddressField属性来装饰它们。 (每个子类可能具有不同的设置,并且基类具有基于这些属性填充地址字段的方法)。除了AddressField属性之外,这些子类应该相同地序列化

但是当我对其进行序列化时,我的地址节点序列化为(例如)

...
<address p5:type="AddressUK" xmlns:p5="http://www.w3.org/2001/XMLSchema-instance">
    <company>Company Name</company>
    ...

我真的很喜欢在没有类型和命名空间信息的情况下序列化为<address>。我怀疑它试图在那里帮助我,因为如果没有这些信息我就无法正确地反序列化,但对于我的场景(与第三方提供商集成),信息是多余的,而不是他们期望的(而且我不需要以这种尴尬的方式反序列化)

这是可能的,还是我从完全错误的角度接近这个?

0 个答案:

没有答案