添加KnownType属性会导致未知错误

时间:2010-06-21 14:19:22

标签: c# asp.net web-services serialization

我正在使用DataContract / DataMembers将我的类序列化为JSON以获取Web服务,除了我的一个成员,它可以是类a或类b,其中类b扩展类a,它一切正常

如果省略KnownType参数,则在序列化期间抛出异常:

Type 'ClassB' with data contract name 'ClassB:http://schemas.datacontract.org/2004/07/MyApp.App_Code' is not expected.

正如预期的那样,因为ClassB是A类的扩展,因此不知道deserialiser。所以我需要将一个已知的类型属性添加到包含成员

的父类中
[KnownType(typeof(ClassB))]
[DataContract]

这个编译很好,但我正在测试它的页面似乎变得很棒,它加载很好,但显然服务不再存在,因为我的JS调用告诉我并抛出错误。但我不知道为什么在我的类上添加已知的type属性会导致webservice显然不存在:s

这与我的设置是ClassA,ClassB:ClassA以及我见过的所有示例有关,似乎显示了ClassA:ParentClass,ClassB:ParentClass设置。

.NET 4,VWD 2010express

1 个答案:

答案 0 :(得分:0)

是的,这是与类声明有关,你不能按照我试图的方式,在创建基类之后,让它们都继承它们,它工作正常