IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

[C#] Problème de Cast sur un type générique


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Juin 2009
    Messages
    100
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 100
    Par défaut [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 : 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();
            }
    }
    TroisiemeClass
    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");
            }
        }
    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
     
    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.

  2. #2
    Membre chevronné
    Inscrit en
    Octobre 2005
    Messages
    400
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 400
    Par défaut
    Effectivement je ne comprend pas trop pourquoi, mais effectivement aussi il existe une atlernative :


    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 SuperClass<Info> where Info : AutreClass
        {
     
            public void Add(Info info)
            {
                TroisiemeClass troisiemClass = info as TroisiemeClass;
                if (info == null)
                {
                    info.Aff();
                }
                else
                {
                    troisiemClass.Aff2();
                }
            }
        }

  3. #3
    Membre confirmé
    Inscrit en
    Juin 2009
    Messages
    100
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 100
    Par défaut
    Ca marche nickel!

    Merci oyigit

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Cast sur un type générique
    Par debloc dans le forum Débuter avec Java
    Réponses: 7
    Dernier message: 31/10/2012, 22h23
  2. Appel de '.class' sur un type générique
    Par acarbenay dans le forum Langage
    Réponses: 2
    Dernier message: 18/10/2011, 15h10
  3. Probléme de Casting d'un type de retour java
    Par KnowPart dans le forum SQL
    Réponses: 2
    Dernier message: 15/12/2010, 15h42
  4. Probléme de Casting d'un type de retour java
    Par KnowPart dans le forum JDBC
    Réponses: 0
    Dernier message: 15/12/2010, 12h59
  5. réflexion sur des types génériques
    Par ziad.shady dans le forum API standards et tierces
    Réponses: 1
    Dernier message: 06/06/2008, 12h25

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo