1. 程式人生 > >.NET(C#):XML序列化時派生類的處理

.NET(C#):XML序列化時派生類的處理

ali main 基類 bsp 處理 program ext serial pub

.NET(C#):XML序列化時派生類的處理

針對基類的XmlSerializer序列化派生類

第一種方法是在基類添加XmlInclude特性,這樣的話基類的XmlSerializer可以序列化派生類了。

 1 [XmlInclude(typeof(B))]
 2 public class A
 3 {
 4     public int value;
 5 }
 6 public class B: A
 7 {
 8     public int valueB;
 9 }
10  
11 class Program
12 {
13     static void Main()
14     {
15 var xs =new XmlSerializer(typeof(A)); 16 using (var textWriter =new StringWriter()) 17 { 18 xs.Serialize(textWriter, new B()); 19 Console.WriteLine(textWriter); 20 } 21 } 22 }

第二種方法就是在XmlSerializer的構造函數內指定派生類型,然後序列化,這樣就不用在基類上加入XmlInclude特性了。

 1 public class A
 2  {
 3       public int value;
 4   }
 5   public class B: A
 6   {
 7       public int valueB;
 8   }
 9   
10  class Program
11  {
12      static void Main()
13      {
14          var xs =new XmlSerializer(typeof(A), new Type[] { typeof(B) });
15          using (var textWriter =new
StringWriter()) 16 { 17 xs.Serialize(textWriter, new B()); 18 Console.WriteLine(textWriter); 19 } 20 } 21 }

.NET(C#):XML序列化時派生類的處理