2010-05-13 18 views
2

Je suis nouveau à WCF et une simple question ...énumérations, DataContracts et WCF question

Ma classe DataContract retourne un type Enum au consommateur de l'un de ses méthodes exposées.

Le consommateur peut voir le type enum, et instancier des variables de ce type.

Cependant, je n'ai pas fourni de [DataContract] ni de [EnumMember] pour l'énumération dans le service.

Ma question est, pourquoi le client est-il encore capable de le voir? Je pensais que j'aurais dû en faire un [DataContract] pour qu'il soit sérialisé avec l'objet métier, non?

Répondre

1

Oui - vous avez dû - jusqu'à .NET 3.5 SP1.

Microsoft « desserrée » les règles et maintenant la DataContractSerializer se comporteront comme XmlSerializer, si vous ne mettez pas de [DataContract] et [DataMember] attributs sur quoi que ce soit: il tout simplement sérialiser toutes les propriétés publiques et types nécessaires. Bien que cela puisse être une approche "plus simple" pour le scénario simple, vous perdez aussi beaucoup de contrôle sur l'espace de noms, la commande, etc. - donc je préfère appliquer ces attributs explicitement, juste pour exprimer clairement (et documenter!) mon intention. Mais avec .NET 3.5 SP1, il n'est plus requis et appliqué par le DataContractSerializer.

+0

Merci, marc, qui l'a clarifié. – NotNowJohn