Ipotizziamo di avere questo contratto in un servizio WCF:
1 2 | [OperationContract] string HelloWorld(string foo, int bar); |
Nel caso in cui ci si agganci da client non-WCF, come ad esempio client dotnet 1.1 (o client non dotnet), ci si potrebbe trovare in una situazione come la seguente:
1 2 | Service1.HelloWorld(string foo, bool fooSpecified , int bar, bool barSpecified); |
L’ultimo parametro viene aggiunto per esplicitare l’obbligatorietà del parametro int bar. Questo comportamento nasce dall’assenza dei tipi nullable (int?, bool?) nei framework dotnet pre-2.0.
Per risolvere questa problematica:
1. aggiungere l’attributo XMLSerializerFormat come contratto all’interfaccia esposta dal web service WCF;
2. aggiungere l’attributo DataContract DataMember[IsRequired=true] alla proprietà da serializzare