无法通过.Net 2.0 Web服务中的枚举

时间:2012-08-14 07:52:28

标签: 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。

感谢您的帮助。

2 个答案:

答案 0 :(得分:6)

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

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

     [EnumMember] 
     ImportCosting 
} 

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

答案 1 :(得分:0)

我有类似的问题。在基本类型(即非可空字段)的代理类字段中,有一个名为Specified的第二个字段。

也许在你的情况下,TaskContainer有一个名为TaskTypeSpecified的字段。尝试设置

container.TaskTypeSpecified = true;