Fare il cast da 2 oggetti identici ma con 2 nomi diversi

venerdì 18 settembre 2009 - 11.12

magozeta Profilo | Newbie

ciao a tutti.

vorrei chiedere una cosa che sembra banale ma non mi funziona.

ho 2 classi con la stessa struttura ma chiamate in modo diverso. non riesco a "castare" una in quell'altra.

esempio:

classe pippo (int numero, string nome)
classe pluto (int numero, string nome)

dove averle instanziate e popolato "pluto" vorrei mettere il suo contenuto in pippo faccio:

pippo = (pippo)pluto.

mi da errore che non può eseguire il cast implicito.

mi aiutate? grazie

alx_81 Profilo | Guru

>ciao a tutti.
Ciao

>ho 2 classi con la stessa struttura ma chiamate in modo diverso.
>non riesco a "castare" una in quell'altra.
>mi aiutate?
Non puoi castare una classe in un'altra direttamente così come vuoi fare.
Devono avere la stessa interfaccia per andare d'accordo.

Ti faccio un esempio, interfaccia comune:
interface IPippoPluto { //metodo di esempio void IsPippoPluto(); }

classi Pippo e Pluto che implementano la stessa interfaccia:
class Pluto : IPippoPluto { public int numero; public string nome; public void IsPippoPluto() { } } class Pippo : IPippoPluto { public int numero; public string nome; public void IsPippoPluto() { } }

Assegnazione e cast implicito:

class PippoPluto { public void Wrap() { // creo una variabile e dico che deve essere fatto con quell'interfaccia IPippoPluto pl; // siccome Pluto ha quell'interfaccia assegno a pl una nuova istanza di Pluto pl = new Pluto(); // siccome Pippo ha la stessa interfaccia di Pluto, ora posso castare Pippo pi = (Pippo)pl; } }

>grazie
di nulla!

--

Alessandro Alpi | SQL Server MVP

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi
http://italy.mvps.org
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-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5