我的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有什么优点/缺点吗?
答案 0 :(得分:5)
XmlIncludeAttribute通常用于使用XmlSerializer进行序列化/反序列化,而KnownTypeAtrribute用于DataContractSerializer。
这两个属性用于相同目的---指定在序列化或反序列化给定类型时应由XmlSerializer / DataContractSerializer识别的类型。