簡體   English   中英

使用System.Xml.Serialization序列化對象?

[英]Serialize Object using System.Xml.Serialization?

我有一個序列化為XML的類。 此類具有一個Object成員變量。 如何正確序列化此項目? 顯然,它應該以字符串形式編寫,但是在讀取時,它應該成為任何類型。

public class MyClass
{
    public MyClass()
        : this("", null)
    {
    }

    public MyClass(String name, Object value)
    {
        Name = name;
        Value = value;
    }

    [XmlAttribute("name")]
    public String Name;

    [XmlAttribute("value")] // Won't work!
    public Object Value;
}

編輯:有趣的是, [XmlElement()]能夠序列化Object類型。 因此,一種解決方法是使用值而不是屬性。

您不能將對象序列化為屬性-這意味着您必須將(可能)復雜對象序列化為字符串。

作為XmlAttributeAttribute文檔狀態:

您只能將XmlAttributeAttribute分配給返回可以映射到XML架構定義語言(XSD)簡單類型之一(包括從XSD派生的所有內置數據類型)的值(或值數組)的公共字段或公共屬性。 anySimpleType類型)。 可能的類型包括可以映射到XSD簡單類型的任何類型,包括Guid,Char和枚舉。 有關XSD類型及其如何映射到.NET數據類型的列表,請參見DataType屬性。

您不能將xmlattribute序列化為對象。 您必須使用[XmlIgnore]忽略它,或者使用[XmlAttribute("value", typeof(string)]將其加載為字符串[XmlAttribute("value", typeof(string)]然后將其轉換為post對象構造中的任何類型。

您可以執行此操作(但是由於對象類型的原因,反序列化顯然無法工作):

private object m_object = null;

[XmlAttribute("value")]
public string ObjectValue
{
get { return m_object.ToString();}
set { m_object = value;}
}

[XmlIgnore]
public object Value
{
get { return m_object; }
set { m_object = value; }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM