请求时使用XmlSerializer,响应时使用DataContractSerializer?

时间:2011-06-01 20:40:28

标签: wcf serialization

是否可以接收带有属性的请求并使用XmlSerializer对其进行反序列化,并使用DataContractSerializer发回一个仅包含元素的响应?

另外,如果您收到带属性的请求,您是否必须使用XmlSerializer来反序列化内容?

1 个答案:

答案 0 :(得分:4)

对于第二个问题:如果你有属性,那么你需要使用XmlSerializer - DataContractSerializer不支持它们。

对于第一个问题:是的,这是可能的。不,这并不容易。串行器的选择是在操作格式化程序级别完成的。 WCF允许您使用[XmlSerializerFormat]或[DataContractFormat](默认值)更改每个操作的序列化程序,但这会将序列化程序绑定到请求和响应。

如果你真的真的想要这样做,你可以创建自己的格式化程序(用一些操作行为替换它),然后在那个格式化程序中你可以选择序列化/反序列化输入/输出的方式(你甚至可以使用不同的格式化程序)每个参数的序列化程序),但你需要创建一个格式化程序,这不是一件容易的事情。

我写过一些关于message formattersreplacing serializers in Silverlight的帖子,可以为您提供如何开始的提示。但是,如果你只能使用XmlSerializer,那将会更容易。