WCF Datacontract - prend-il en charge nullable membre de données?
[DataMember]
public int? NumberOfPages; ////////////Is this supported????
[DataMember]
public bool? Color; ////////////Is this supported????
[DataMember]
public int? BulkQuantity;
[DataMember]
- Si vous utilisez [MessageHeader], vous avez besoin d' [MessageBodyMember] pour nullable. Mais je pense qu'avec DataMember il doit être fine.
Vous devez vous connecter pour publier un commentaire.
Oui, bien sûr!
Vous devriez avoir aucune difficulté que ce soit pour créer nullable de données des membres, ils seront traités dans le WSDL/XSD comme "xs:nillable=true" membres. Pas de problème du tout.
Oui, veuillez voir Types pris en charge par le Contrat de Données Sérialiseur:
@Kahoon et Batwad:
Nous avons résolu ce problème en utilisant le
nullable<>
ou?
type en deux étapes:Dans la classe contenant le générique de champ, définissez le champ comme suit:
Dans le contrat de données qui utilise ce baseclass, vous pouvez définir les éléments qui sont connus pour le sérialiseur/deserializer à l'aide de certains d'annotation des balises de style. Ici, nous avons défini, par exemple:
Au lieu de
BaseClass<nullable<DateTime>>
vous pouvez utiliserBaseClass<DateTime?>
, je pense.Après cela, la sérialisation des génériques, les valeurs null a travaillé pour nous.
Généralement cela fonctionne, mais vous pouvez rencontrer des problèmes si la classe qui détient le nullable membre est générique. Quelqu'un a également couru dans le même problème que moi: https://web.archive.org/web/20160617092729/http://discoveringdotnet.alexeyev.org/2009/06/wcf-nullable-values-are-not-working-in.html
Dans mon cas, Il semble que la Nullable Entier passé est considérée comme le Chaîne Vide et PAS Valeur Null
Voici donc comment je gère la nullable dans le code