Salve,
eccomi di nuovo a chiedere aiuto. Stavolta il mio problema riguarda il passaggio dei dati.
Io ho molti oggetti che si passano dati di tipo diverso, e senza una regola ben precisa (in alcune condizione un oggetto produce un double, in altre condizioni un double[], in altre ancora un oggetto da me definito, etc). Per poter passare questi dati da oggetto a oggetto ho quindi pensato di fare un cast a Object per ogni dato "in uscita" dal primo oggetto, per poi rifare il cast al tipo originale al dato "in ingresso" nel secondo oggetto. Ho solo da poco scoperto che questo procedimento è abbastanza comune, ed è detto "boxing / unboxing".
Il problema a questo punto riguarda il come conoscere il tipo "contenuto" all'interno dell'Object. Ho stranamente notato infatti che alcune volte usando il metodo GetType() mi viene restituito il tipo corretto, altre volte mi viene restituito un generico "System.Object". Inoltre facendo il cast da Object a tipo diverso, o viceversa, alcune volte mi restituisce un "invalid cast exception", altre volte va a buon fine.
Ora, dato che non sono ancora riuscito a capire quale sia la causa di questi comportamenti diversi da caso a caso, volevo chiedervi se sapete indicarmi una guida la più dettagliata possibile riguardante le regole di cast (quali sono le conversioni di tipo permesse e quali no), e i casi in cui funziona e quelli in cui non funziona il boxing/unboxing.
Grazie a tutti.
Ciao

Rispondi quotando