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

问题描述:

我有一个类似于以下的类。将XML反序列化为对象时,类的默认属性

[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],但我怎么能指定那就是在参考元素(SHPROD00324)中的数据被放置在我的命名标识属性?

我在寻找的是一些告诉反序列化的方法,如果在引用元素中指定了任何值,那么它应该采用该值并将其设置在标识符属性中。

在此先感谢。

问候 马格努斯

试试这个

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

是的,这确实起作用。谢谢 – 2012-02-16 07:15:56

我不知道,如果你可以通过属性值指定这一点,但是你的类可以实现System.Xml.Serialization.IXmlSerializable并覆盖ReadXml方法反序列自身但它需要。