我有一些使用默认DataContractSerialization的WCF服务。一些服务方法返回Dictionary对象。其中一个客户正在从WCF服务生成XSD文件(与biztalk相关),他请求将所有字典类型转换为实现IXmlSerializable的新字典类型。我想知道,这个转换是否会有一些意想不到的结果,可能会以某种方式影响DataContract序列化?
更新:服务器和客户端共享相同的域dll,客户端不会从服务中生成它们。也许在问题中我忽略了要点;我想知道如果一个对象要通过数据契约序列化来序列化,那么在对象中实现IXmlSerializable会导致任何问题。
发布于 2012-07-07 18:54:06
有一个意想不到的问题;因为域对象已经实现了数据协定序列化,所以如果不修改整个序列化机制,就无法实现IXmlSerializable。
发布于 2012-03-22 18:03:46
您的客户端是否与服务共享dll?
除非他与服务共享库(Dll),否则在服务端进行更改不会有任何不同。您的WCF返回的是数据,而不是类。这些数据被重新组织成类,这些类是由客户端根据服务返回的WSDL中的定义创建的。您无法控制这些生成的库(通过在服务器上进行更改),除非您在客户端和服务器之间共享dll。
如果他想将生成的字典包装在IXmlSerializable字典中,那么他可以,或者如果他想生成不同类型的字典,他可能也可以这样做,但我不认为您可以在服务器端做任何事情。
发布于 2012-03-22 18:09:51
当您的客户需要序列化来自服务调用的字典结果时,告诉他们使用以下可序列化字典:C# Serializable Dictionary – a Working Example
它接受普通字典作为构造函数参数,从而将任何字典转换为可序列化的字典。如果您愿意,也可以将SerializableDictionary类型作为服务调用结果返回。
https://stackoverflow.com/questions/9819593
复制相似问题