2012-11-23 69 views
1

我想xml序列化包含其他自定義對象的自定義對象。我這樣做,但它不會工作。如何在c#中序列化包含其他類的對象的對象?

class A() 
{ 
public B b; 
} 

class B() 
{ 
public int a; 
} 

System.Xml.Serialization.XmlSerializer writer = new System.Xml.Serialization.XmlSerializer(typeof(A)); 
XmlAttributes xmlAttributes = new XmlAttributes(); 
System.IO.StreamWriter file = new System.IO.StreamWriter( @"d:\SerializationOverview.xml"); 
writer.Serialize(file, new A()); 
file.Close(); 

結果是:

<A> 
</A> 

回答

2

首先,兩個AB需要被標記public

new A()還沒有在b中獲得序列化值;它不會序列化空值。給它一個值:

writer.Serialize(file, new A { b = new B { a = 123 } }); 

另外:嘗試偏好公共領域的屬性。

例如:

using System.IO; 
using System.Xml.Serialization; 
public class A 
{ 
    public B B { get; set; } 
} 
public class B 
{ 
    public int A {get;set;} 
} 
static class Program 
{ 
    static void Main() 
    { 
     var writer = new XmlSerializer(typeof(A)); 
     using (var file = File.Create(@"SerializationOverview.xml")) 
     { 
      writer.Serialize(file, new A { B = new B { A = 123 } }); 
     } 
    } 
} 
+0

哦,我不能相信的時候我沒有注意到:d,感謝ü非常 –

相關問題