我使用 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/