我有一个WCF服务(.NET4.0)。客户端在.NET2.0中。客户端传递到服务的枚举值总是使用枚举默认值(即第一个枚举成员)进行设置。
这是.NET2.0中的问题吗?有什么变通办法吗?
;字段名称>指定的是XmlSerializer使用的功能。我以前被这个刺痛过。它让每个人都以一种类似痛苦的方式发现了这一特征。
正如您所说,如果这被设置为false,那么您的字段将不会被序列化。不幸的是,false是布尔字段的默认值,所以如果你忘记设置它,它会非常烦人
如果你不喜欢这个功能,那么你应该可以删除<字段名称>指定字段,无后果。然后该字段将始终被序列化。
这些字段之所以有区别,是因为您正在.NET 2中使用XmlSerializer。在.NET 4 WCF应用程序中,您正在使用不具备此功能的DataContractSerializer。
WCF并没有真正接收到枚举的默认值。服务器上确实没有收到该枚举的任何内容。因此,枚举没有设置,因此它仍然是默认值。