将XML反序列化为对象时类的默认属性

本文关键字:默认 属性 对象 XML 反序列化 | 更新日期: 2023-09-27 18:24:47

我有一个类似这样的类。

[Serializable]
[DataContract()]
[XmlType(AnonymousType = true)]
public partial class Reference
{
    //-- Constructor
    public Reference() { }
    //-- Properties
    [DataMember]
    [XmlAttribute()]
    public string Type {get;set;}
    [DataMember]
    public string Assignor { get; set; }
    [DataMember]
    public string Identifier { get; set; }
    [DataMember]
    public string System { get; set; }
    [DataMember]
    public string Format { get; set; }
    [DataMember]
    public string Value { get; set; }

然后我得到了一些XML,我想反序列化到这个类中,它看起来是这样的。

<References>
  <Reference Type="ShipmentId">SHPROD00324</Reference> 
</References>

由于[XMLAttribute],它将Type属性设置为正确的,但我如何指定Reference元素(SHPROD00324)中的数据放置在我的名为Identifier的属性中?

我正在寻找的是某种方法来告诉反序列化,如果在Reference元素中指定了任何值,那么它应该取该值并在identifier属性中设置它。

提前谢谢。

致以最良好的问候Magnus

将XML反序列化为对象时类的默认属性

试试这个

[DataMember]
[XMLText]
  public string Identifier { get; set; }

我不确定您是否可以通过属性值指定这一点,但是您的类可以实现System.Xml.Serialization.IXmlSerializable并重写ReadXml方法以根据需要自行反序列化。