【发布时间】:2013-03-01 09:51:51
【问题描述】:
[DataContract]
public enum Color
{
Red,
Blue
}
[DataContract]
public enum Color1
{
[EnumMember]
Red,
[EnumMember]
Blue
}
这两个枚举在序列化时或在客户端会被区别对待吗?
【问题讨论】:
[DataContract]
public enum Color
{
Red,
Blue
}
[DataContract]
public enum Color1
{
[EnumMember]
Red,
[EnumMember]
Blue
}
这两个枚举在序列化时或在客户端会被区别对待吗?
【问题讨论】:
当您将DataContractAttribute 应用于枚举时,您必须通过使用EnumMemberAttribute 明确说明应包含该枚举的哪些成员。
因此,在您的情况下,两个枚举将生成两个不同的合同,一个没有成员,一个有两个成员,Red 和 Blue。
如果您不将 DataContractAttribute 应用于枚举,则该枚举的所有成员都将隐含在合约中。
请参阅 here 以获得解释,主要是 Enumeration Member Values 和
Notes on Simple Enumerations 部分。
【讨论】:
如果您不使用 EnumMember 属性标记枚举值,它将不是数据的一部分 合同。这意味着它不会出现在 wsds/contract/proxies 中,并且客户端将无法使用它。
【讨论】:
它不一定会被客户端识别为Color 的已知类型的成员,因为您没有明确表示它是合同的一部分,因此没有理由在生成代理时尊重它。
【讨论】: