我有一个 WCF 服务 (.NET4.0)。客户端在 .NET2.0 中。客户端传递给服务的枚举值始终设置为枚举默认值(这是第一个枚举成员)。
这是 .NET2.0 中的问题吗?有什么解决方法吗?
我有一个 WCF 服务 (.NET4.0)。客户端在 .NET2.0 中。客户端传递给服务的枚举值始终设置为枚举默认值(这是第一个枚举成员)。
这是 .NET2.0 中的问题吗?有什么解决方法吗?
<FieldName>Specified 是 XmlSerializer 使用的一项功能。我以前被这个刺痛过。它使每个人都以同样痛苦的方式发现了这个功能。
正如您所说,如果将其设置为 false 那么您的字段将不会被序列化。不幸的是 false 是布尔字段的默认值,因此如果您忘记设置它会非常烦人。
如果您不喜欢此功能,那么您应该能够删除 <FieldName>Specified 字段而不会产生任何后果。然后该字段将始终被序列化。
这些字段只会产生影响,因为您在 .NET 2 中使用 XmlSerializer。在 .NET 4 WCF 应用程序中,您使用的是不具备此功能的 DataContractSerializer。
WCF 并没有真正接收到枚举的默认值。该枚举的服务器上实际上没有收到任何内容。因此未设置枚举,因此它仍然是默认值。