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 :

Transtyper vers un type plus spécialisé


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    2 766
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 2 766
    Par défaut Transtyper vers un type plus spécialisé
    Hello,

    J'ai deux hiérarchie deux classes :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    A   X   ---> abstraits
    |   |
    B   Y   ---> concrets
    A et X sont abstraits.
    X et Y sont respectivement des membres de A et B (idéalement...).

    Je veux que A oblige B à instancier une classe concrète dérivée de X (ici Y).

    J'aurais donc tendance à déclarer dans A un membre de type X, puis de l’initialiser dans B par un new Y().

    Mais en statique, j'aurai ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    A   X   ---> abstraits
    |   |
    B   X   ---> concrets
    Comme on le voit, je me retrouve avec un objet déclaré de type X. Or, je veux qu'il soit reconnu dans B comme un objet de type Y.

    Comment faire ?

    Merci.

  2. #2
    Membre extrêmement actif

    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Juin 2003
    Messages
    4 506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2003
    Messages : 4 506
    Par défaut
    Citation Envoyé par oodini Voir le message

    Mais je dois ensuite travailler avec un objet déclaré de type X. Or, je veux qu'il soit reconnu dans B comme un objet de type Y.
    Comme cela ce qui me vient à l'esprit c'est de faire un

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Y y = ObjetTypéX as Y ;
    Et ensuite utilisé y.

  3. #3
    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 hegros Voir le message
    Comme cela ce qui me vient à l'esprit c'est de faire un

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Y y = ObjetTypéX as Y ;
    Et ensuite utilisé y.
    Idem, mais je choisirais plutôt le cast normal afin de lever une exception si il y a quelque chose qui a "foiré". (c'est à dire que l'objet instancié n'est pas de type Y, mais d'un autre type hérité de X).

Discussions similaires

  1. Cast vers un type plus grand et perte de precision
    Par Kaluza dans le forum Langage
    Réponses: 3
    Dernier message: 10/06/2012, 11h12
  2. [VC++ 2003] copie d'un buffer vers un buffer plus petit
    Par Rafoo dans le forum Visual C++
    Réponses: 3
    Dernier message: 21/09/2006, 15h01
  3. Vers quel type de base de donnée nous diriger
    Par florent00760 dans le forum Décisions SGBD
    Réponses: 2
    Dernier message: 18/05/2006, 14h28
  4. [Tomcat] migration vers une version plus récente
    Par butcher dans le forum Tomcat et TomEE
    Réponses: 4
    Dernier message: 31/10/2003, 21h46

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