[KnownType]和[XmlInclude]中的序列化之间的区别

时间:2013-12-23 05:23:26

标签: wcf

我的WCF数据合约很少如下:

        [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
        {

        } 

这两种不同类型的实现之间的区别是什么? XmlInclude比KnownType有什么优点/缺点吗?

1 个答案:

答案 0 :(得分:5)

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

这两个属性用于相同目的---指定在序列化或反序列化给定类型时应由XmlSerializer / DataContractSerializer识别的类型。