2 messaggi dal 10 marzo 2004
Come posso convertire una classe complessa , strutturata in una identica ma chiamata differentemente?
Le due classi sono composte da sottoclassi con proprietà etc. etc.

Ho provato con Ctype DirectCast ma vb.net non me lo permette , mi restituisce un errore , semplicemente è impossibile convertire le classi , ma a me sembrano identiche.

Per essere convertite due classi devono avere delle caratteristiche particolari?

Spero in una risposta.

Grazie in anticipo

Saluti
Andrea Pettenati
andrea.pettenati@libero.it
11.886 messaggi dal 09 febbraio 2002
Contributi
Ciao,
ti è possibile modificare queste classi? Oppure sono state fatte da qualcun altro e tu non hai possibilità di intervento?

Le due classi non sono compatibili, neanche se al loro interno ci sono delle proprietà con gli stessi nomi e dello stesso tipo. Questa infatti non è una condizione sufficiente affinché due classi possano essere considerate "la stessa cosa". Due gemelli, pur avendo lo stesso aspetto si possono muovere e si comportare in maniera diversa. Motivo per cui se avessi un gemello non mi consentirebbero di fargli fare gli esami al posto mio ^^

Certo, la cosa più immediata da fare sarebbe copiare le proprietà di una classe nell'altra:

classe2.Nome = classe1.Nome;
classe2.Cognome = classe1.Cognome;


Ma sarebbe molto tedioso e prono ad errori se una o entrambe le classi dovessero cambiare in futuro. Invece, leggi qui, ci sono alcune idee su come copiare le proprietà senza diventare matti.
http://stackoverflow.com/questions/855283/cast-objects-of-different-classes-but-same-types

In sintesi, puoi usare:
- la serializzazione, ovvero "salvare" una rappresentazione della classe e dei suoi valori sottoforma di dati xml, e poi reidratare questi dati per la seconda classe;
- la reflection, ovvero andare ad enumerare a runtime le proprietà della classe1, leggerne il valore, e scriverlo sulle proprietà classe2.
- Automapper, che è pensato proprio per questo scopo. Te lo consiglio, qui c'è un tutorial.
http://www.dev-spark.com/automapper-una-libreria-per-il-mapping-dei-tipi.aspx

Se invece hai la libertà di modificare le due classi, allora si possono usare anche altri metodi.


Per essere convertite due classi devono avere delle caratteristiche particolari?


Al loro interno deve essere definito un operatore di conversione che fornisca istruzioni esplicite (è codice) su come passare da un tipo all'altro. Vedi qui:
http://msdn.microsoft.com/en-us/library/09479473.aspx

Ma devi poter modificare le classi.
Modificato da BrightSoul il 17 giugno 2011 22.25 -

Enjoy learning and just keep making

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.