Bonjour,

Ma Liste contient des instances de ma classe ObjetPerso définie comme :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
public class ObjetPerso
{
private object realObject;
private int niveau,
.
.(Constructeur, accesseurs... Qui vont bien)
.
}
Ensuite j'ai deux autre classes :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
public class MaClasse1
{
private int ID,
.
.(Constructeur, accesseurs... Qui vont bien)
.
}
public class MaClasse2
{
private int ID,
.
.(Constructeur, accesseurs... Qui vont bien)
.
}
chacune a un attribut ID.

Ensuite j'ai rempli cette liste :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
List<ObjetPerso> maListe = new List<ObjetPerso>();
maList.Add(new ObjetPerso(new MaClasse1(1), 1));
maList.Add(new ObjetPerso(new MaClasse1(2), 1));
maList.Add(new ObjetPerso(new MaClasse2(1), 2));
maList.Add(new ObjetPerso(new MaClasse2(2), 2));
Mon problème, c'est que quand j'essaie de récupérer l'objet de niveau 2, et ID 1 (Par exemple), sachant que dans mon programme il ne peux être qu'une instance de la classe maClasse2 :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
objetClass2 = maList.Single(t => t.niveau == 2 && ((objetClass2)t).ID == 1);
J'ai une exception InvalidCastException :

Impossible d effectuer un cast de l objet de type 'MaClasse1'en type 'MaClasse2'.
Vous auriez une idée sur la source de ce problème? Y a-t-il un truc qui cloche dans ma manière de procéder?

Merci!