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