2008-11-24 2 views
0

Dans WCF, si nous utilisons webreference dans le projet client, un argument supplémentaire appelé «IsSpecified of bool» est automatiquement ajouté pour chacun des arguments écrits dans le service. Pourquoi cela se passait-il?Référence Web dans WCF

Répondre

1

Cette propriété est ajoutée à la classe de proxy pour tous les types qui peuvent être ignorés pendant la sérialisation. C'est une notification au XMLSerializer pour ignorer ce type et ne pas le sérialiser.

Les types qui ont cette propriété générée pour eux sont les types de valeur - y compris bool, int et DateTime. Mon point de vue sur la signification de ceci est que les types de valeur ne peuvent pas être NULL donc vous avez besoin d'un moyen de dire au sérialiseur que vous ne voulez rien envoyer.

Pour un type de référence comme string, vous pouvez le définir simplement comme nul et le sérialiseur se chargera volontiers du reste. Pour les types de valeurs, vous devez aider le sérialiseur, sinon il devra juste envoyer la valeur par défaut du type.

Je suis sûr que quelqu'un d'autre peut développer plus sur les raisons techniques de ce comportement, mais je pense que ce que j'ai dit est globalement correct.

This La publication va un peu dans ce numéro.

Questions connexes