[DataContract]
public enum Color
{
Red,
Blue
}
[DataContract]
public enum Color1
{
[EnumMember]
Red,
[EnumMember]
Blue
}
这两个枚举在序列化或客户端处理时会有不同的处理吗?
答案 0 :(得分:9)
当您将DataContractAttribute
应用于枚举时,您必须通过使用EnumMemberAttribute
明确说明应该包含该枚举的哪些成员。
因此,在您的情况下,两个枚举将产生两个不同的合同,一个没有成员,另一个有两个成员,Red
和Blue
。
如果您不将DataContractAttribute
应用于枚举,则该枚举的所有成员都将隐含在合同中。
请参阅here获取解释,主要是Enumeration Member Values
和
Notes on Simple Enumerations
部分。
答案 1 :(得分:4)
如果您没有使用EnumMember属性标记枚举值,则它不会成为数据的一部分 合同。这意味着它不会出现在wsds / contract / proxies中,并且客户端将无法使用它。
答案 2 :(得分:0)
它不一定会在客户端上被识别为已知类型的成员Color
,因为您没有明确说明它是合同的一部分,所以在生成代理时没有理由尊重它。