2013-12-23 78 views
2

我有幾個WCF數據契約如下:差異與[XmlInclude]

 [DataContract] 
     public class Hatchback: Car 
     { 
      [DataMember] 
      public int Wheels; 
     } 

     [KnownType(Hatchback)] 
     [DataContract] 
     public abstract class Car 
     { 

     } 

我也可以寫爲:

 [DataContract] 
     public class Hatchback: Car 
     { 
      [DataMember] 
      public int Wheels; 
     } 

     [XmlInclude(Hatchback)] 
     [DataContract] 
     public abstract class Car 
     { 

     } 

之間有什麼差異性這兩種不同類型的實現? KnownType的XmlInclude有什麼優點/缺點嗎?

回答

5

XmlIncludeAttribute通常用於使用XmlSerializer進行序列化/反序列化,而KnownTypeAtrribute用於DataContractSerializer。

這兩個屬性用於相同的目的---指定序列化或反序列化給定類型時應由XmlSerializer/DataContractSerializer識別的類型。