根据MSDN KnownTypes指定服务在序列化或反序列化时使用的已知类型。 我正在尝试使用 DataContractSerializer 进行序列化。
[KnownType(typeOf(A))]
Class A: ISomeInterface
{
}
Class B:
{
public A{get;Set;}
}
当我进行序列化时它的工作正常但是在异常时抛出异常 反序列化。
第1行位置420出错。元素“http://schemas.microsoft.com/2003/10/Serialization/Arrays:anyType”包含来自映射到名称“http://schemas.datacontract.org/2004/07/SCS.Domain.FormsAndRecordsManagement.Contract.Base:A”的类型的数据。反序列化器不知道映射到此名称的任何类型。考虑使用DataContractResolver或将与“A”对应的类型添加到已知类型列表中 - 例如,使用KnownTypeAttribute属性或将其添加到传递给DataContractSerializer的已知类型列表中。
答案 0 :(得分:0)
你这样做是错误的。 KnownType允许您事先指定在反序列化期间应包括的类型。
[KnownType(typeOf())]属性用作注释,以包含契约与其他对象的其他依赖关系。
示例,如果B类依赖于A类,您应该像这样注释B类:
[DataContract]
public class A : ISomeInterface
{
}
[KnownType(typeOf(A))]
[DataContract]
public Class B:
{
[DataMember]
public A { get; set;}
}