2012-11-23 72 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,感谢ü非常 –

相关问题