将 KnownTypes 应用于 class 本身而不是 service/contract
Applying KnownTypes to class itself instead of service/contract
根据 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' contains data from a type that maps to the name 'http://schemas.datacontract.org/2004/07/SCS.Domain.FormsAndRecordsManagement.Contract.Base:A”。反序列化器不知道映射到该名称的任何类型。考虑使用 DataContractResolver 或将对应于 'A' 的类型添加到已知类型列表中 - 例如,通过使用 KnownTypeAttribute 属性或将其添加到传递给 DataContractSerializer 的已知类型列表中。
你做错了。 KnownType 允许您提前指定在反序列化期间应考虑的类型。
[KnownType(typeOf())] attribute is use as annotation to include the other dependency of contract with other object.
示例,如果 class B 依赖于 class A 你应该这样注释 class B:
[DataContract]
public class A : ISomeInterface
{
}
[KnownType(typeOf(A))]
[DataContract]
public Class B:
{
[DataMember]
public A { get; set;}
}
根据 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' contains data from a type that maps to the name 'http://schemas.datacontract.org/2004/07/SCS.Domain.FormsAndRecordsManagement.Contract.Base:A”。反序列化器不知道映射到该名称的任何类型。考虑使用 DataContractResolver 或将对应于 'A' 的类型添加到已知类型列表中 - 例如,通过使用 KnownTypeAttribute 属性或将其添加到传递给 DataContractSerializer 的已知类型列表中。
你做错了。 KnownType 允许您提前指定在反序列化期间应考虑的类型。
[KnownType(typeOf())] attribute is use as annotation to include the other dependency of contract with other object.
示例,如果 class B 依赖于 class A 你应该这样注释 class B:
[DataContract]
public class A : ISomeInterface
{
}
[KnownType(typeOf(A))]
[DataContract]
public Class B:
{
[DataMember]
public A { get; set;}
}