C#中WCF中的多级继承

时间:2015-07-07 18:44:51

标签: c# wcf inheritance serialization

我有三个班级:

[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类时,它确实有效。

由于

0 个答案:

没有答案