我有一个 wcf 服务,它有 3 种方法,获取项目列表、添加项目和获取单个项目。
从基类继承的可能有 4 种类型。该服务使用每个派生类的 ServiceKnownType 进行修饰。
当我使用服务并且不选择重新使用程序集并引用 pocos 时,getlist 会按预期工作。当我重新使用程序集时,列表会引发序列化异常。
查看 wcf 客户端生成的 reference.cs 文件,我可以看到 KnownTypeAttribute 是在已生成的基类上创建的。在我重用基类的项目中,它用 ServiceKnownTypeAttribute 修饰方法。
因此,在调用 web 方法以返回列表时,我得到以下信息…… 反序列化器不知道映射到此名称的任何类型。考虑使用 DataContractResolver 或将与“TheChildObject”对应的类型添加到已知类型列表中 - 例如,通过使用 KnownTypeAttribute 属性或将其添加到传递给 DataContractSerializer 的已知类型列表中。
有解决这个问题的方法吗?应该很常见吧?