C#: parametri ‘Specified’ nei servizi WCF

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

Related Posts:

  • Nessun post correlato