Skip to Content
Programming WCF Services, 3rd Edition
book

Programming WCF Services, 3rd Edition

by Juval Lowy
August 2010
Intermediate to advanced
908 pages
26h 22m
English
O'Reilly Media, Inc.
Content preview from Programming WCF Services, 3rd Edition

Enumerations

Enumerations are always, by definition, serializable. When you define a new enum, there is no need to apply the DataContract attribute to it, and you can use it freely in a data contract, as shown in Example 3-15. All the values in the enum will implicitly be included in the data contract.

Example 3-15. Using an enum in a data contract

enum ContactType
{
   Customer,
   Vendor,
   Partner
}

[DataContract]
struct Contact
{
   [DataMember]
   public ContactType ContactType;

   [DataMember]
   public string FirstName;

   [DataMember]
   public string LastName;
}

If you want to exclude certain enum values from the data contract, you need to first decorate the enum with the DataContract attribute, and then explicitly apply the EnumMemberAttribute to all enum values you want to include in the enum data contract. The EnumMember attribute is defined as:

[AttributeUsage(AttributeTargets.Field,Inherited = false)]
public sealed class EnumMemberAttribute : Attribute
{
   public string Value
   {get;set;}
}

Any enum value not decorated with the EnumMember attribute will not be part of the data contract for that enum. For example, this enum:

[DataContract]
enum ContactType
{
   [EnumMember]
   Customer,

   [EnumMember]
   Vendor,

   //Will not be part of data contract
   Partner
}

will result in this wire representation:

enum ContactType
{
   Customer,
   Vendor
}

The other use for the EnumMember attribute is to alias certain enum values to an existing enum data contract using the Value property. For example, this enum:

[DataContract] enum ContactType ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Start your free trial

You might also like

Programming WCF Services, 4th Edition

Programming WCF Services, 4th Edition

Juval Lowy, Michael Montgomery
Programming .NET Security

Programming .NET Security

Adam Freeman, Allen Jones

Publisher Resources

ISBN: 9781449382476Supplemental ContentErrata Page