我有一些WCF服务,它们使用默认的DataContractSerialization。某些服务方法返回Dictionary对象。其中一个客户端正在从WCF服务生成XSD文件(与biztalk相关),并且他正在请求将所有字典类型转换为实现IXmlSerializable的新字典类型。 我想知道,如果这种转换有任何意外结果可能会影响DataContract序列化吗?
更新: 服务器和客户端共享相同的域dll,客户端不从服务生成它们。也许在这个问题中我错过了主要观点;我想知道一个对象是否要通过datacontract序列化进行serizalized,在对象中实现IXmlSerializable会导致任何问题。
答案 0 :(得分:0)
您的客户是否与该服务共享dll?
除非他与服务共享库(dll),否则在服务端进行更改不会有任何区别。您的WCF返回数据,而不是类。该数据正在重构为由客户端根据您的服务返回的WSDL中的定义创建的类。除非在客户端和服务器之间共享dll,否则无法控制这些生成的库(通过在服务器上创建chnages)。
如果他想将生成的词典包装在IXmlSerializable词典中,那么他可以,或者如果他想生成不同类型的词典,那么他也可以这样做,但我认为你没有任何东西可以做到做服务器端。
答案 1 :(得分:0)
当需要序列化服务调用的字典结果时,告诉客户端使用以下可序列化字典:C# Serializable Dictionary – a Working Example
它接受普通字典作为构造函数参数,从而将任何字典转换为可序列化字典。如果您愿意,也可以将SerializableDictionary
类型作为服务调用结果返回。
答案 2 :(得分:0)
出现意想不到的问题;由于域对象已经在实现数据协定序列化,因此无法在不修改整个序列化机制的情况下实现IXmlSerializable。