1

我在客户端和服务器上都有以下枚举:

enum AddressType
{
    fax,
    ...
    email,
    voice
}

当我的方法被调用时,我返回一个具有 AddressType 作为属性的对象,并将其显式设置为AddressType.voice

但是,在客户端,接收到的对象却AddressType.fax...

奇怪的是,其他一切看起来都很正常,而其他枚举类型也正常返回。

我检查了客户端和服务器都具有完全相同的枚举定义,具有相同的顺序和 xml 命名空间。中间没有任何东西可以改变这个值。

我无法更改 Web 服务接口,因为 Web 服务本身是另一个模型,而客户端是运行大量内容的遗留应用程序。

关于这里可能发生什么的任何想法?

谢谢。

4

1 回答 1

0

您正在使用什么 Web 服务框架(WCF、ASPX 等)?根据使用的序列化程序,您可能必须将您的属性显式标记为可序列化。

例如,使用 default DataContractSerializer,您需要将DataMember属性放在要序列化的每个属性或字段上。听起来该字段没有被序列化,因为它默认为零值。您可以通过更改分配给枚举的每个成员的值来测试这一点,或者通过重新排列它们并让自动分配的值不同,或者在定义中明确指定每个枚举成员的值。如果该值始终以零表示的值返回,那么(假设像属性设置器这样的所有其他东西都在工作)该属性没有被序列化。

于 2013-06-04T19:20:19.190 回答