转载地址:http://www.zhuli8.com/wcf/EnumMember.html
枚举类型的定义总是支持序列化的。当我们定义一个新的枚举时,不必应用DataContract特性,就可以在数据契约中使用它。数据契约隐式地包含了枚举对象的所有值。
enum ContactType { Customer, Vendor, Partner } [DataContract] struct Contact { [DataMember] public ContactType ContactType; [DataMember] public string FirstName; [DataMember] public string LastName; }
如果要将确定的枚举值排除于数据契约之外,首先需要为枚举类型标记DataContract特性。然后,再将那些我们希望包含在枚举数据契约的枚举值,明确地标记为EnumMember特性。
没有标记EnumMember特性的枚举值不属于该枚举的数据契约。
[DataContract]
enum ContactType
{
[EnumMember]
Customer,
[EnumMember]
Vendor,
//不会成为数据契约的一部分
Partner
}
生成的传输型表示形式为:
enum ContactType
{
Customer,
Vendor
}
EnumMember特性还有另外一个用途,就是通过它的Value属性,为现有的枚举数据契约的枚举值设置确切的别名。例如这样的枚举:
[DataContract]
enum ContactType
{
[EnumMember(Value = "MyCustomer")]
Customer,
[EnumMember]
Vendor,
[EnumMember]
Partner
}
生成的传输型表示形式如下:
enum ContactType
{
MyCustomer,
Vendor,
Partner
}