我有几个WCF数据合同如下:
[DataContract]
public class Hatchback: Car
{
[DataMember]
public int Wheels;
}
[KnownType(Hatchback)]
[DataContract]
public abstract class Car
{
}
Run Code Online (Sandbox Code Playgroud)
我也可以这样写:
[DataContract]
public class Hatchback: Car
{
[DataMember]
public int Wheels;
}
[XmlInclude(Hatchback)]
[DataContract]
public abstract class Car
{
}
Run Code Online (Sandbox Code Playgroud)
这两种不同类型的实现之间的区别是什么?XmlInclude比KnownType有什么优点/缺点吗?
XmlIncludeAttribute通常用于使用XmlSerializer进行序列化/反序列化,而KnownTypeAtrribute用于DataContractSerializer.
这两个属性用于相同目的---指定在序列化或反序列化给定类型时应由XmlSerializer/DataContractSerializer识别的类型.