Nella definizione del contratto con i web services in ASP.NET c'è una forte correlazione fra le scelte OO del modello ad oggetti con quelle del modello del messaggio. Se, per esempio, volete visualizzare una proprietà siete tenuti a dichiararla come pubblica. Se dal punto di vosta OO avrebbe senso dichiararla come privata ma dal punto di vista del messaggio averla inclusa allora non resta che implementarsi la serializzazione a mano.

In Indigo non c'è più correlazione. Verranno infatti pubblicate solo le proprietà dichiarate con l'attributo DataMemberAttribute. Quindi la classe:

[DataContract]
public class Contatto
{
  [DataMember]
  public string Cognome;

  public string Nome;

  [DataMember]
  private float Salario;
}

esporrà il cognome e il salario rispettivamente.