WCF枚举,如果我不将成员标记为EnumMember怎么办?

Lev*_*Lev 6 .net c# wcf enums

[DataContract]
public enum Color
{
    Red,
    Blue
}

[DataContract]
public enum Color1
{
    [EnumMember]
    Red,
    [EnumMember]
    Blue
}
Run Code Online (Sandbox Code Playgroud)

在序列化时,或在客户端,这两个枚举会有不同的对待吗?

Luk*_*oid 9

当你已经应用于DataContractAttribute枚举时,你必须明确说明应该包含哪个枚举成员,通过使用EnumMemberAttribute.

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

如果您不应用DataContractAttribute枚举,则该枚举的所有成员将隐含在合同中.

请参阅此处获取解释,主要是Enumeration Member ValuesNotes on Simple Enumerations部分.


Ste*_*eri 5

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