是否需要WCF的DataContract属性

use*_*437 30 .net c# wcf serialization

我正在写WCF服务和他的客户端.我想在服务和客户端之间发送/接收我的自定义类的对象.

我有3个模块

  • WCF服务
  • WCF客户端
  • 公共类库

WCF服务和客户端都引用了公共类库.我不想用DataContract属性标记我的所有类.

所以,我的问题是"WCF需要DataContract属性吗?"

我使用.NET 4和netTcpBinding.

Mar*_*ell 23

如果我没记错(IIRC),如果你不使用正式的数据合约标记,它默认就像一个字段序列化器.这样可以工作,但版本不太容易,因为私有更改可能会破坏客户端/服务器.IMO您应该始终使用data-contract/data-member属性正式装饰WCF类型.它会在没有它们的情况下工作,但出于错误的原因(IIRC,最初它没有正式标记就行不通).

  • http://msdn.microsoft.com/en-us/library/ms733127%28v=vs.110%29.aspx表示默认情况下,合同中仅包含公共读/写属性和字段. (3认同)

Jac*_*eja 7

"是否需要WCF的DataContract属性"

从技术上讲,没有.这取决于您是否使用DataContractSerializer(这是许多绑定的默认设置).

还有其他选择:

  1. 考虑替代序列化器
  2. 尝试使用数据合同代理(某些地方仍然需要属性,但它可能意味着你可以保持你的课程不受影响,如果那是相关的)
  3. 依赖于序列化没有Data Contract属性的类的序列化默认值