[C#] Problème de Cast sur un type générique
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
Code:
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();
}
} |
TroisiemeClass
Code:
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");
}
} |
et une classe générique SuperClass
Code:
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();
}
} |
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?
Remarque : Le reste du code compile sans problème
Merci.