WCF数据合同/序列化

Aak*_*ash 4 wcf serialization datacontract xmlserializer

我创建了一个简单的WCF应用程序,它公开了一个操作 此操作将复合数据类型作为参数.

我没有使用[DataContract]属性修饰此复合数据类型.但这是有效的,我可以在WSDL中看到Schema.

现在我的理解是这个新的自定义类型应该用[Serializable]或[dataContract]属性进行修饰以参与Web服务操作.

我在这里缺少什么?

Dar*_*rov 12

自.NET 3.5 SP1以来,在WCF中引入了POCO支持,您不再需要使用[DataContract][DataMember]属性来装饰对象.公共属性将自动公开.虽然我建议您使用这些属性明确标记它们.


Ste*_*per 5

正如Darin所说,sp1引入了对推断数据合同的支持.如果编组类型是公共类型并且未使用该DataContract属性进行修饰,则WCF将自动推断此类属性并将该DataMemeber属性应用于该类型的所有公共成员.

JuvalLöwy在他的"编程WCF服务"一书中写道;

在我看来,依赖于推断的数据合同是一个草率的黑客攻击,与WCF中的大多数其他内容相悖....使用DataContract属性,并明确您的数据协定.这将使您能够利用数据合同功能,如版本控制.