philipina
Messages postés50Date d'inscriptionmardi 5 mars 2002StatutMembreDernière intervention 4 décembre 2013
-
1 avril 2008 à 12:32
sebmafate
Messages postés4936Date d'inscriptionlundi 17 février 2003StatutMembreDernière intervention14 février 2014
-
1 avril 2008 à 14:19
Bonjour,
J'ai un petit problème de casting d'objet.
Dans mon code j'ai 2 definitions d'object ayant la même format.
Les objects aaa et bbb
-------------------------------------
public partial class aaa
{
private string nom;
private string prenom;
//GET AND SET
public string lenom
{
get
{
return this.nom;
}
set
{
this.nom = value;
}
}
public string leprenom
{
get
{
return this.prenom;
}
set
{
this.prenom = value;
}
}
}
public partial class bbb
{
private string nom;
private string prenom;
//GET AND SET
public string lenom
{
get
{
return this.nom;
}
set
{
this.nom = value;
}
}
public string leprenom
{
get
{
return this.prenom;
}
set
{
this.prenom = value;
}
}
}
--------------------------------
Je voudrais remplir un object de type aaa et le copier (via un casting) dans un object de type bbb avec le code suivant:
-----------------------------
aaa testA = new aaa();
bbb testB = new bbb();
testA.lenom = "Brika";
testA.leprenom = "Remi";
testB = (bbb)testA;
---------------------------
Avec ce code j'obtiens l'erreur "cannot convert type 'aaa' to 'bbb' "
Mes objects réels dans mon code son beaucoup plus grand c'est pourquoi je voudrais éviter de copier tous les parametres 1 par 1 d'un object à un autre.
Pouvez-vous me dire comment serait-il possible de résoudre ce problème?
xmox667
Messages postés357Date d'inscriptionjeudi 8 juin 2006StatutMembreDernière intervention26 décembre 20114 1 avril 2008 à 14:06
Salut,
J'ai une question, pourquoi dans ton code réel tu as des classes dont le contenu est identique mais dont le nom est différent.
Dans ton exemple si la class bbb hérite de la class aaa celà fonctionne.
public class bbb : aaa
{
}
aaa a = new aaa();
a.lenom = "tata";
a.leprenom = "titi";
bbb b = (bbb)a;
Si tu as des classes dont une partie du code est commune tu dois utilisé le mécanisme d'héritage.
Si tu ne peux pas, parce que les classes hérite déjà d'une autre classe, tu peux faire ceci:
public class bbb
{
//raccourci syntaxique de visual studio 2008 pour les propriétées
public string lenom { get; set; }
public string leprenom { get; set; }
public bbb(aaa a)
{
Set(a);
}
public void Set(aaa a)
{
lenom = a.lenom;
leprenom = a.leprenom;
}
}
aaa a = new aaa();
a.lenom = "tata";
a.leprenom = "titi";
bbb b = new bbb(a);