【问题标题】:WCF enums, What if I don't mark members as EnumMember?WCF 枚举,如果我不将成员标记为 EnumMember 怎么办?
【发布时间】:2013-03-01 09:51:51
【问题描述】:
[DataContract]
public enum Color
{
    Red,
    Blue
}

[DataContract]
public enum Color1
{
    [EnumMember]
    Red,
    [EnumMember]
    Blue
}

这两个枚举在序列化时或在客户端会被区别对待吗?

【问题讨论】:

    标签: c# .net wcf enums


    【解决方案1】:

    当您将DataContractAttribute 应用于枚举时,您必须通过使用EnumMemberAttribute 明确说明应包含该枚举的哪些成员。

    因此,在您的情况下,两个枚举将生成两个不同的合同,一个没有成员,一个有两个成员,RedBlue

    如果您不将 DataContractAttribute 应用于枚举,则该枚举的所有成员都将隐含在合约中。

    请参阅 here 以获得解释,主要是 Enumeration Member ValuesNotes on Simple Enumerations 部分。

    【讨论】:

      【解决方案2】:

      如果您不使用 EnumMember 属性标记枚举值,它将不是数据的一部分 合同。这意味着它不会出现在 wsds/contract/proxies 中,并且客户端将无法使用它。

      【讨论】:

      【解决方案3】:

      它不一定会被客户端识别为Color已知类型的成员,因为您没有明确表示它是合同的一部分,因此没有理由在生成代理时尊重它。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-05-07
        • 2018-11-05
        • 2020-12-26
        • 2013-07-22
        • 2011-06-29
        • 2019-03-24
        • 2023-04-10
        • 2012-08-15
        相关资源
        最近更新 更多