2013-10-14 163 views
0

是否有任何可能,我序列化一個對象,而不需要添加其實際的根標籤。這聽起來有點好奇,所以I'm附加一些代碼that'll解釋一下我的意思是:序列化不帶類型標記的類型

class Test { 
    public MyClass M; 
} 

class MyClass { 
    public int A; 
    public int B; 
} 

成員A和B現在不應該序列化到M,而是Test根類爲以下:

<Test> 
    <A>3</A> 
    <B>4</B> 
</Test> 

我需要這個,因爲我有一個簡單的從基類派生的,但在所有未加入的成員,我想,以避免內部虛擬型的系列化很多空僞類。這可能嗎?

+0

不知道你問什麼,但你的類和XML將連載。 –

+0

我知道它會序列化,但不是我想要的方式。目前,它會序列化到 但我想從MyClass的推數據來檢驗 – HimBromBeere

回答

0

XmlSerializer默認情況下不支持此行爲。該課程可以實施IXmlSerializable或從XDocument創建文檔。

請參見:XML serialization of a nested object, but at the root level

public string Serialize(Test test) 
{ 
    var document = 
     new XDocument(
      new XElement("Test", 
       new XElement("A", test.M.A), 
       new XElement("B", test.M.B))); 

    return document.ToString(); 
} 

var test = new Test { M = new MyClass { A = 1, B = 2 } }; 

Console.WriteLine(Serialize(test)); 

輸出:

<Test> 
    <A>1</A> 
    <B>2</B> 
</Test> 
0

我認爲這是不可能做到這一點與XmlSerializer類。但是您總是可以使用XmlReaderXmlWriter手動序列化和反序列化您的數據。

相關問題