2009-02-27 5 views

risposta

13

nota: Sto rispondendo a questo dal punto di vista del cliente - vale a dire l'interruttore /collectionType:<type> su svcutil.exe (disponibile anche in IDE).

Personalmente, tendo a mantenerlo semplice e utilizzare List<T>. Se hai intenzione di eseguire molti binding di dati, l'opzione BindingList<T> potrebbe essere un'opzione, ma per le proprietà degli oggetti di solito è eccessivo. Gli array rendono la vita molto difficile ... evitali ;-p

Si noti che con .NET 3.5 le funzionalità disponibili per ogni sfocatura di tipo di raccolta, grazie ai metodi di estensione su Enumerable.

Normalmente, Collection<T> è utile quando si pensa di voler creare una sottoclasse della raccolta per utilizzare i punti di estensione virtual. Questa non è davvero un'opzione con WCF.

Come già detto, l'utilizzo di IList<T> ecc non è un'opzione a meno che non si stia utilizzando la condivisione degli assembly, poiché la classe generata non sarà in grado di creare la raccolta.

1

Non è possibile utilizzare il tipo di interfaccia in datacontract perché il serializzatore non funziona con le proprietà del tipo di interfaccia.

È possibile utilizzare il tipo di calcestruzzo ad es. MyClass [] o List

+0

Quale tipo è meglio usare quando? – JacobE

0

A parte il fatto che non è possibile utilizzare i tipi di interfaccia, non importa quale dei tipi di raccolta si utilizzano. Il cliente del tuo servizio non li vedrà mai.

Ricordare che i servizi Web forniscono una descrizionej del servizio al client in termini di WSDL o mess. Nel caso di WSDL, il client riceverà uno schema XML che descrive i messaggi da inviare e ricevere. Nel caso di una collezione, il client vedrà semplicemente un elemento con un maxOccurs = "non limitato" invece di uno con maxOccurs = "1". Il client può interpretare questo come una matrice, o lista, o qualsiasi altra cosa. Indipendentemente dalla collezione restituita dal tuo servizio, il client visualizzerà maxOccurs = "illimitato" e lo interpreterà come preferisce.

L'eccezione restituirebbe un dizionario di qualche tipo e non so come funzioni.