Bonjour,
J'ai un petit soucis quand au cast d'un type générique. Voici un exemple de ce que je cherche à faire. J'ai trois classes :
AutreClass
TroisiemeClass
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 public class AutreClass { public virtual void Aff() { System.Console.Out.WriteLine("AutreClass.Aff"); } public static void Main(string[] args) { SuperClass<AutreClass> super = new SuperClass<AutreClass>(); super.Add(new TroisiemeClass()); Console.In.Read(); } }
et une classe générique SuperClass
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 public class TroisiemeClass : AutreClass { public override void Aff() { System.Console.Out.WriteLine("TroisiemeClass.Aff"); } public void Aff2() { System.Console.Out.WriteLine("TroisiemeClass.Aff2"); } }
Je n'arrive pas à comprendre pourquoi le compilateur n'accepte pas le cast de ((TroisiemeClass)info) alors que TroisiemeClass hérite de AutreClass, quelqu'un pourrait-il m'expliquer? Ou existe-t-il une solution alternative?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 public class SuperClass<Info> where Info : AutreClass { public void Add(Info info) { if (info is TroisiemeClass) ((TroisiemeClass)info).Aff2(); else info.Aff(); } }
Remarque : Le reste du code compile sans problème
Merci.
Partager