我有三个班级:
[DataContract]
[KnownType(typeof(B))]
[KnownType(typeof(C))]
public class A
{
[DataMember]
public string Value { get; set; }
}
[DataContract]
public class B : A
{
[DataMember]
public string OtherValue { get; set; }
}
[DataContract]
public class C : B
{
[DataMember]
public string AnotherValue { get; set; }
}
当我尝试创建C类并使用WCF发送它时,它会抱怨:
元素“http://tempuri.org/:B”包含来自映射到名称“http://schemas.datacontract.org/2004/07/C”的类型的数据。反序列化器不知道映射到此名称的任何类型。考虑使用DataContractResolver或将与“C”对应的类型添加到已知类型列表中 - 例如,通过使用KnownTypeAttribute属性或将其添加到传递给DataContractSerializer的已知类型列表中。'。
我是否将KnownType属性放在错误的位置?或者我不能创建这样的课程?
当我创建B类时,它确实有效。
由于