Conversione di Tipi

martedì 10 febbraio 2009 - 18.22

MagoDaniel1981 Profilo | Newbie

Buongiorno, una domanda piuttosto semplice penso per chi se la cava bene...

Se io ho una proprietà (ed il relativo campo) di una classe nel quale voglio istanziare un oggetto, ma non ne conosco a priori il tipo, come mi dovrei comportare?

Nel mio caso, ad esempio, ho una classe MerceSpedizione che viene istanziata nella proprietà della classe Spedizione.
La classe Spedizione infatti ha un campo CollectionSpedizioni che conterrà tante classi MerceSpedizione, una per ogni articolo spedito in quella spedizione.

Ora, la classe MerceSpedizione ha un campo Materiale che mi contiene il materiale effettivamente spedito, oltre a campi relativi ai quantitativi ed i costi per quel singolo materiale. Questo materiale, nel mio caso, può essere a sua volta rappresentato da alcune classi, tipo Gadget, BuonoSconto o altro...
Tutte queste derivano da una classe Astratta MaterialePromozionale. Tuttavia, il campo Materiale, potrebbe contenere anche un oggetto di tipo CapoAbbigliamento che non deriva da MaterialePromozionale, ma è una classe a se.

Ora, la domanda è: come faccio, a run-time, a capire di che tipo di oggetto sto parlando? Se io, per intenderci, chiedo il GetType della proprietà Materiale, otterrò sempre Object (la mia proprietà, non sapendo il tipo che dovrà contenere, l'ho dichiarata come Object) oppure ottengo il tipo effettivamente caricato al momento della richiesta?

Forse non mi son spiegato gran che, beh... Spero che se qualcuno ci capirà qualcosa avrà voglia di fornirmi qualche spunto...

Buon lavoro a tutti.
Daniel

rossimarko Profilo | Guru

Ciao,

il gettype ti restituisce comunque il tipo dell'oggetto, quindi se dichiari

object obj = new TuaClasse();

e poi fai obj.GetType() ottieni --> TuaClasse
-----------------------------------------
Rossi Marco
http://blogs.dotnethell.it/rossimarko

MagoDaniel1981 Profilo | Newbie

Perfetto! Grazie Marco.
Ti confesso che poi, avevo fretta di capire la cosa, e quindi ho aperto un nuovo progetto giusto per i test e ho verificato esattamente quello!

Grazie comunque!

Daniel

rossimarko Profilo | Guru

Se hai risolto allora ti chiedo di accettare la risposta così il thread viene chiuso. Trovi il pulsante nell'intestazione del messaggio.

Grazie!
-----------------------------------------
Rossi Marco
http://blogs.dotnethell.it/rossimarko
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2023
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5