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

Mar*_*ans 3 c# enums web-services windows-mobile

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

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

public enum TaskTypeEnum { GoodsReceipt, ImportCosting };

[Serializable, DataContractAttribute]
public class TaskContainer
{
    [DataMemberAttribute] 
    public TaskTypeEnum TaskType { get; set; }       
...
Run Code Online (Sandbox Code Playgroud)

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

var container = new TaskContainer();
container.TaskType = TaskTypeEnum.ImportCosting;
service.Save(container);
Run Code Online (Sandbox Code Playgroud)

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

谢谢您的帮助.

Arc*_*rus 6

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

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

     [EnumMember] 
     ImportCosting 
} 
Run Code Online (Sandbox Code Playgroud)

另请参阅:http://msdn.microsoft.com/en-us/library/aa347875.aspx