Domanda

Nel nostro progetto stiamo consumando webservices WCF esposti presso la sede centrale di servizi con basicHttpBinding .

In applicazione desktop client dobbiamo consumare quei webservices. Sono in grado di generare classe proxy utilizzando WSDL.exe.

Ma, ho bisogno di convertire i dati / classe fornite dal webservice nella mia classe locale, per che ora sto xmlserialzing quelle classi / oggetti fornite dal webservice e deserializzazione nelle mie classi locali sia come schema di classi corrisponde esattamente lo stesso.

C'è un modo migliore che posso seguire? o Ho bisogno di assegnare ad ogni proprietà da una classe all'altra?

grazie NRK.

È stato utile?

Soluzione

  • dichiarare classe manualmente anziché generatrice. Questa è la soluzione più SECCO.

  • Automapper

Altri suggerimenti

Se si ha il controllo sulle vostre classi locali (che non vengono generati codice, o li stanno generando, da soli) è possibile utilizzare attributi XML per decorare la vostra classe, in modo da poter serializzare e deserializzare a quel xml si lavora con e non c'è bisogno di avere i nomi specifici per le vostre proprietà. In aggiunta a questo, si può avere proprietà aggiuntive sulla vostra classe locale.

Se non si ha il controllo sulla definizione le vostre classi locali, quindi è necessario definire un convertitore o come elder_george menzionato, utilizzare automapper.

utilizzando un convertitore scritta manuale è IMO il modo più veloce ed è possibile definirli operatori Converter come impliciti sulla tua classe locale.

Ho fatto la cosa serializzare / deserializzare me stesso proprio come si doveva. Se i vostri classi hanno le stesse proprietà delle classi proxy si potrebbe scrivere un metodo di supporto che utilizza la riflessione per scorrere le proprietà del proxy e impostare le proprietà corrispondenti della vostra classe. Finché i nomi delle proprietà sono gli stessi, che un metodo dovrebbe funzionare su tutte le classi.

A pochi pensieri:

  • condivisione di montaggio uso tramite WCF; questo consente di utilizzare lo stesso montaggio vero e proprio ad entrambe le estremità. Fintanto che questo è un complesso DTO, questo va bene (non eccessivamente portatile, però). Questo è /reference (anche /r) in svcutil.exe, oppure è possibile farlo tramite l'IDE
  • uso DataContractSerializer e di andata e ritorno (come si è già, solo che WCF mappe più da vicino a DataContractSerializer, non XmlSerializer)
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top