c# - 无法在 .Net 2.0 Web 服务中传递枚举

标签 c# web-services enums windows-mobile

我正在为 Windows Mobile 开发,因此必须使用 Web 服务而不是 WCF。我有一个通过 Web 服务传递的业务对象,除了一个枚举属性外,它工作正常。无论客户端将其设置为什么,此值始终作为默认值出现在服务器上。很困惑:(

这是在服务器上定义的业务对象中的代码:

public enum TaskTypeEnum { GoodsReceipt, ImportCosting };

[Serializable, DataContractAttribute]
public class TaskContainer
{
    [DataMemberAttribute] 
    public TaskTypeEnum TaskType { get; set; }       
...

这是客户端设置此属性的代码:

var container = new TaskContainer();
container.TaskType = TaskTypeEnum.ImportCosting;
service.Save(container);

由于某些未知原因,当此“容器”对象到达服务器时,TaskType 属性始终设置为 GoodsReceipt,无论我在客户端上将其设置为什么。

感谢您的帮助。

最佳答案

需要确保你的枚举也有一个DataContract,否则不会被序列化,每个成员必须有属性EnumMember

[DataContract]
public enum TaskTypeEnum 
{ 
     [EnumMember] 
     GoodsReceipt, 

     [EnumMember] 
     ImportCosting 
} 

另见:http://msdn.microsoft.com/en-us/library/aa347875.aspx

关于c# - 无法在 .Net 2.0 Web 服务中传递枚举,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11947981/

相关文章:

javascript - 将枚举转换为值数组(将所有 JSON 值放入数组中)

c# - 带有 Type 变量的 Cast<T>()

c# - Linq to Object/XML 其中元素不存在

c# - 如何调用 delete/put 方法以从 silverlight 中恢复服务

c# - 在没有类型实例的情况下打开 C# 中的类型

c# - 如何将用户凭据传递给 Web 服务?

android - Phonegap Android 互联网无法正常工作

c# - 第一次重建时出现的奇怪错误,然后在第二次重建时消失

c# - 在 IIS 上托管 WCF Web 服务时显式调用服务构造函数

java - 是否可以在 Java 8 中扩展枚举?