WCF 枚举问题 : cannot "or" the enum values

标签 wcf enums

我使用 enum 作为标志并想“或”它,但总是遇到错误:

枚举值“3”对于“Common.EventType”类型无效,无法序列化。如果类型具有 DataContractAttribute 属性,请确保存在必要的枚举值并使用 EnumMemberAttribute 属性进行标记

代码:

[DataContract]
public enum EventType
{
    [EnumMember]
    Event1 = 1,
    [EnumMember]
    Event2 = 2,
    [EnumMember]
    Event3 = 4,
    [EnumMember]
    AllEvents = Event1 | Event2 | Event3
}

MyContractClient 代理 = new MyContractClient(context);

proxy.Subscribe( EventType.Event1 | EventType.Event2 );

先感谢您

最佳答案

您需要添加 [Flags] 属性以通过 WCF 发送标志。

Enumeration Types in Data Contracts

[DataContract][Flags]
public enum EventType
{
  [EnumMember]
  Event1 = 1,
  [EnumMember]
  Event2 = 2,
  [EnumMember]
  Event3 = 4,
  [EnumMember]
  AllEvents = Event1 | Event2 | Event3
}

关于WCF 枚举问题 : cannot "or" the enum values,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14474734/

相关文章:

c# - 添加 WCF 服务会生成 Reference.cs 文件,其中引用 Microsoft.CodeDom 而不是 System.CodeDom

class - 如何编写枚举类型的 Swift 泛型函数?

java - 如何在java中与客户端和服务器共享枚举

c# - 无法在 Razor View 中获取枚举显示名称属性

ios - Swift:使用枚举来表示扑克牌的等级

c# - 返回自定义类的 WCF 服务在 Reference.cs 中生成错误

.net - Windows AppFabric 自动启动未启动 WCF 服务

multithreading - WCF支持的最大并发线程数?

c# - WCF 3.5 与 4.0 RESTful 服务性能对比

c++ - 如何从另一个文件 : C++ 访问类的公共(public)枚举