我有一个基类(例如)
[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>
。我怀疑它试图在那里帮助我,因为如果没有这些信息我就无法正确地反序列化,但对于我的场景(与第三方提供商集成),信息是多余的,而不是他们期望的(而且我不需要以这种尴尬的方式反序列化)
这是可能的,还是我从完全错误的角度接近这个?