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# 2.0] Comment transtyper un objet vers un derivé ?


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Mars 2005
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 14
    Par défaut [C# 2.0] Comment transtyper un objet vers un derivé ?
    Bonjour,

    Je développe une bibliothèque de classe C# sous vs2005

    j'utilise dans ma solution deux projets pour avoir deux dll

    on a donc deux projets et namespace:
    GeneriqueLib
    SpecialiseLib


    le probleme est que g une classe Livre dans chaque projet:
    • GeneriqueLib.Livre
      SpecialiseLib.Livre qui herite de GeneriqueLib.Livre

    à un moment si je veux faire une méthode de Livre dans SpecialiseLib qui fait:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Livre MonLivre = (SpecialiseLib.Livre)base.maMethode();
    (avec public Livre maMethode() dans GeneriqueLib.Livre)
    paf j'ai le droit à un beau
    L'exception System.InvalidCastException n'a pas été gérée.
    Impossible d'effectuer un cast d'un objet de type 'GeneriqueLib.Livre' en type 'SpecialiseLib.Livre'."
    Source="SpecialiseLib"
    On m'a toujours dit que le principe de l'heritage c'est que quand est B herite de A, B est de meme type que A... donc je ne comprend pas

    j'espère être clair dans mes explications.
    Merci de votre aide car ça fait un certain temps que je me prend la tete là dessus et je sèche...

  2. #2
    Membre éprouvé
    Inscrit en
    Juillet 2005
    Messages
    83
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 83
    Par défaut
    Si j'ai bien compris ta situation, Specialise.Livre hérite de Generique.Livre ?

    Dans ce cas, c'est tout à fait normal.
    Tu peux sans problème faire un cast de Specialise.Livre en Generique.Livre, mais pas le contraire... or c'est justement le contraire que tu essaies de faire !
    On m'a toujours dit que le principe de l'heritage c'est que quand est B herite de A, B est de meme type que A...
    ...ce qui n'est pas exact, en tout cas formulé ainsi, car il n'y a pas de relation d'équivalence : si B est "de même type" que A, A en revanche n'est pas "de même type" que B.

    Tu peux faire un cast de n'importe quel type vers Object, mais pas le contraire.

  3. #3
    Membre averti
    Inscrit en
    Mars 2005
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 14
    Par défaut
    OK merci de vos réponses.

    J'ai réussi à corriger mon problème en faisant autrement !
    ma méthode ne retourne plus Livre mais modifie directement les propriétés de la classe.

    ça marche nikel.

    j'aurai du y penser plus tot.

    Merci encore pour votre aide.

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

Discussions similaires

  1. Réponses: 8
    Dernier message: 16/11/2013, 19h49
  2. Comment exporter un objet C++ vers un programme JAVA?
    Par Hamdi Hedhili dans le forum C++
    Réponses: 2
    Dernier message: 26/02/2008, 16h35
  3. Comment exporter les objets d'un utilisateur vers un autre ?
    Par p026687 dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 09/05/2007, 18h00
  4. Comment rediriger la sortie vers /dev/null
    Par dclink dans le forum C
    Réponses: 4
    Dernier message: 24/06/2003, 18h23
  5. Comment mettre plusieurs objets ds un composant ?
    Par Fleury dans le forum Composants VCL
    Réponses: 7
    Dernier message: 24/05/2003, 17h34

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