转载地址:
枚举类型的定义总是支持序列化的。当我们定义一个新的枚举时,不必应用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}