.NET(C#):XML序列化時派生類的處理
阿新 • • 發佈:2018-02-09
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 =newStringWriter()) 16 { 17 xs.Serialize(textWriter, new B()); 18 Console.WriteLine(textWriter); 19 } 20 } 21 }
.NET(C#):XML序列化時派生類的處理