WCF 自定义 XML 序列化
在 WCF 中,如果我有这样的代码并且以 XML 格式返回它,则 XML 是自动生成的。 我是否可以明确指定哪个 XML 将用于 CustomerEntity 的序列化?
[OperationContract]
[WebInvoke(Method = "GET"]
CustomerEntity GetCustomer(int customerPk);
我当前使用的替代方法是返回 XElement,但这样做的问题是我无法以这种方式支持 JSon。
更新:我的类型是不可变的,并且使用 raedonly 属性,因此 IXmlSerialized 对我不起作用。
In WCF, if I have code like this and I'm returning it in XML format, the XML is auto generated.
Is it possible for me to expicitly specify which XML will be used for the serialization of the CustomerEntity?
[OperationContract]
[WebInvoke(Method = "GET"]
CustomerEntity GetCustomer(int customerPk);
The alternative that I'm currently using is to return an XElement, but the problem with this is that I can't also support JSon that way.
Update: My types are immutable and use raedonly properties, so IXmlSerializable won't work for me.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
在 CustomerEntity 上实现 IXmlSerialized。
Implement IXmlSerializable on CustomerEntity.
您可以尝试使用原始消息,即使用从 Message 类派生的 Contract 类型,并通过重写 OnWriteBodyContents 和其他可重写的 Message 类成员以您想要的方式编写消息。请参考《从Message类继承》
以下 MSDN 文章的 go 部分了解有关 Message 类的可重写成员的更多信息,
http://msdn.microsoft.com/en-us/library/ms734675.aspx
HTH,
阿米特
You can try using Raw messages i.e. using Contract types deriving from Message class and writing the messages the way you want by overriding OnWriteBodyContents and other overridable Message class members. Please refer "Inheriting from the Message Class"
section gof following MSDN article to know more about overridable members of Message class,
http://msdn.microsoft.com/en-us/library/ms734675.aspx
HTH,
Amit