如何在数据合同 WCF 中使用枚举

Posted

技术标签:

【中文标题】如何在数据合同 WCF 中使用枚举【英文标题】:How can I use a enum in a datacontract WCF 【发布时间】:2011-05-29 20:52:32 【问题描述】:

我想在 WCF 网络服务的数据合同中拥有一个枚举。

我正在尝试使用

[DataContract]
class myclass

    [DataMember]
    public int id get; set;

    [DataContract]
    public enum myenum
     
        [EnumMember]
        a,
        [EnumMember]
        b
    

但我无法在 wcf 客户端访问枚举。请让我知道我做错了什么。

【问题讨论】:

【参考方案1】:

要包含在 mex/wsdl 中,枚举需要在图表中的某处使用,例如在某处应该有一个 myenum 类型的属性。图中未主动使用的类型被省略。

还请注意,您实际上根本不需要注释枚举 - 它们可以正常工作。如果你想自定义它们在网络上的作用,你只需要枚举的属性。

【讨论】:

...或者如果您想发布某些枚举值而不是其他枚举值【参考方案2】:

正如马克所说 - 使用它。在需要 iirc 之前,数据类型本身不是问题。

其中一部分不需要在其上具有 Datacontract 和 EnumMember(适用特殊规则)。请参阅http://msdn.microsoft.com/en-us/library/aa347875.aspx 了解更多信息。

【讨论】:

以上是关于如何在数据合同 WCF 中使用枚举的主要内容,如果未能解决你的问题,请参考以下文章

如何修复“枚举约束失败”?

WCF 确保存在必要的枚举值

在 WCF 数据服务中使用枚举

WCF 服务和线程

WCF IIS 托管服务由单个服务实现的多个服务合同 - 如何通过配置在端点之间共享 uri

在反序列化时使用动态和强制执行 WCF 合同