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 :

héritage et typeof


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de ZaaN
    Inscrit en
    Novembre 2005
    Messages
    819
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 819
    Par défaut héritage et typeof
    soir deux classes :
    et
    Comment fair pour que le test suivant laisse passer les type derivé de A ?
    en gros j aimerais un mot clé typeDerivedOf()

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    public void fonction1(Type _t)
    {
        if (_t == typeof(A))
        {}
    }

  2. #2
    Membre confirmé Avatar de bartoumi
    Profil pro
    Inscrit en
    Février 2005
    Messages
    178
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 178
    Par défaut
    tu fais

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    public void fonction1(Type _t)
    {
        if (_t in typeof(A))
        {}
    }

  3. #3
    Membre Expert Avatar de Guulh
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    2 160
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2007
    Messages : 2 160
    Par défaut
    Ce que tu cherches est la méthode IsSubClassOf du type "Type".
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if (_t.IsSubClassOf(typeof(A)) {... }

  4. #4
    Membre éclairé Avatar de ZaaN
    Inscrit en
    Novembre 2005
    Messages
    819
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 819
    Par défaut
    la methode de Guulh me semble bonne.

    Mais j aimerais savoir comment bartoumi a trouver sa methode qui compile pas d ailleurs

  5. #5
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Par défaut
    Citation Envoyé par ZaaN Voir le message
    Mais j aimerais savoir comment bartoumi a trouver sa methode qui compile pas d ailleurs
    Nulle part, c'est le fruit de son imagination.

    Sinon, la méthode de Guulh est la bonne si tu veux tester le type. Si tu veux tester pour une instance tu peux utiliser is

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     class A
    {
    }
    class B : A
    {
    }
     
    B b;
    if(b is A) // Vrai
    {
     
    }
    A noter aussi que is peut être utilisé pour les interfaces.

  6. #6
    Membre confirmé Avatar de bartoumi
    Profil pro
    Inscrit en
    Février 2005
    Messages
    178
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 178
    Par défaut
    J'utilise cette methode
    lorque j'ai developpez des composant button specifique qui herite tous de la classe Button
    donc pour savoir si il etiat de type Button j'ai fais ce que je t'avais montrer.

    J'ai pas le code avec moi
    mais des que je l'aurais je te le metterai en ligne.
    Merci

  7. #7
    Membre confirmé Avatar de bartoumi
    Profil pro
    Inscrit en
    Février 2005
    Messages
    178
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 178
    Par défaut
    Autant pour moi

    au lieu de in c'est is
    merci de prendre en compte

  8. #8
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Par défaut
    Citation Envoyé par bartoumi Voir le message
    Autant pour moi

    au lieu de in c'est is
    Sauf que is ne peut être utilisé que pour les instances (comme je le mentionne supra). Si il veut tester un type sans disposer d'instance, is ne marche pas. Plus vicieusement :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    if(typeof(B) is A) // false !
    {
    }
    compile mais ne marche pas.

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

Discussions similaires

  1. [Postgresql]Héritage
    Par lheureuxaurelie dans le forum PostgreSQL
    Réponses: 13
    Dernier message: 02/10/2008, 09h18
  2. [Héritage] Vos commentaires....
    Par Fyna dans le forum PostgreSQL
    Réponses: 3
    Dernier message: 03/05/2005, 22h10
  3. [XML Schemas]héritage multiple
    Par nicolas_jf dans le forum XML/XSL et SOAP
    Réponses: 2
    Dernier message: 10/06/2003, 12h55
  4. [Postgres] Héritage + Clés
    Par k-reen dans le forum PostgreSQL
    Réponses: 6
    Dernier message: 21/05/2003, 16h37
  5. Héritage entre Forms
    Par BarBal dans le forum Composants VCL
    Réponses: 7
    Dernier message: 29/08/2002, 17h44

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