0

我有一些使用默认 DataContractSerialization 的 WCF 服务。一些服务方法返回 Dictionary 对象。其中一个客户正在从 WCF 服务(biztalk 相关)生成 XSD 文件,他请求将所有字典类型转换为实现 IXmlSerializable 的新字典类型。我想知道,这种转换是否会有任何意想不到的结果,可能会以某种方式影响 DataContract 序列化?

更新:服务器和客户端共享相同的域 dll,客户端不会从服务中生成它们。也许在这个问题中我错过了要点;我想知道一个对象是否要通过datacontract序列化进行序列化,在对象中实现IXmlSerializable会导致任何问题。

4

3 回答 3

0

您的客户是否与服务共享 dll?

除非他与服务共享库(dll),否则在服务端进行更改不会有任何区别。您的 WCF 正在返回数据,而不是类。该数据被重构为由客户端根据您的服务返回的 WSDL 中的定义创建的类。除非您在客户端和服务器之间共享 dll,否则您无法控制这些生成的库(通过在服务器上进行更改)。

如果他想将生成的字典包装在 IXmlSerializable 字典中,那么他可以,或者如果他想生成不同类型的字典,那么他可能也可以这样做,但我认为您在服务器端无能为力.

于 2012-03-22T10:03:46.207 回答
0

告诉您的客户在需要序列化服务调用的字典结果时使用以下可序列化字典:C# Serializable Dictionary – 一个工作示例

它接受普通字典作为构造函数参数,从而将任何字典转换为可序列化的字典。如果您愿意,还可以将SerializableDictionary类型作为服务调用结果返回。

于 2012-03-22T10:09:50.660 回答
0

出现意外问题;由于域对象已经实现了数据契约序列化,因此没有办法在不修改整个序列化机制的情况下实现 IXmlSerializable。

于 2012-07-07T10:54:06.047 回答