[英]Build a Custom Serialization as String in 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分配給返回可以映射到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.