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 :

Cast vers classe enfant


Sujet :

C#

  1. #1
    Membre éprouvé

    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 448
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 448
    Par défaut Cast vers classe enfant
    Bonjour,

    je supose que la question a déjà été posée mais je n'arrive pas à tomber sur une réponse.

    J'ai une classe mère qui fait certaines choses, je définit une classe enfant qui rajoute quelques fonctions (mais aucune variables).
    Je me demande s'il est possible de forcer un objet du type parent vers le type enfant pour qu'il bénéficie des nouvelles fonctions ?

    Si ce n'est pas possible comment puis-je rajouter des fonctionnalités à un object existant ?

    Merci.

  2. #2
    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
    Hello,

    une fois qu'un objet est créé, il ne peut plus changer de type.

    Si ta classe fille se contente de nouvelles méthodes, et si tu bosses avec le framework 3.5, tu peux utiliser les méthodes d'extension.

  3. #3
    Membre confirmé
    Inscrit en
    Décembre 2005
    Messages
    35
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 35
    Par défaut
    C'est "possible" en créer une méthode de Convert qui ira créer l'enfant à partir des données parents.

    Il n'existe pas de moyen sinon, de dire "Cette table se transforme par l'opération du saint esprit en bureau informatique"
    Pourtant, le bureau informatique est bien une table... mais il va lui manquer un certain nombre de données cruciale pour sa construction qu'il ne peux pas choisir tout seul. Il lui faut donc un converter. exemple statique :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Bureau MyConvert.ToBureau(Table matable);
    L'interface IConverter est faite pour transformer un objet complexe en valeur de base (int, bool, float, etc) et n'est donc pas adaptée au passage d'une classe métier à une autre :
    http://msdn.microsoft.com/en-us/libr...m.convert.aspx

    Parmis les autres méthode que le convert, tu as
    - le constructeur de ton bureau qui prends une table en paramètre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    public Bureau(Table matable) : this();
    - la méthode statique de la classe bureau qui retourne un bureau en prenant une table en paramètre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    public Table Bureau.CreateFromTable(Table matable);
    Bref, tu ne te fera pas l'économie de code.

  4. #4
    Membre expérimenté
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    203
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 203
    Par défaut
    Je me demande s'il est possible de forcer un objet du type parent vers le type enfant pour qu'il bénéficie des nouvelles fonctions ?
    Non

    Si ce n'est pas possible comment puis-je rajouter des fonctionnalités à un object existant ?
    Tu peux le faire avec des méthodes d'extension en C#3
    http://msdn.microsoft.com/fr-fr/library/bb383977.aspx

  5. #5
    Membre éprouvé

    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 448
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 448
    Par défaut
    Merci pour vos réponses.

    Je voulais rajouter des accessors (get) à certains objets, mais je vais devoir passer par des recopiage manuel d'une classe à l'autre via Reflection.

    Merci.

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

Discussions similaires

  1. Modification Id vers Class
    Par csseur22 dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 01/12/2007, 10h08
  2. Réponses: 3
    Dernier message: 27/04/2007, 14h51
  3. Introspection et class Enfants
    Par buggsbunny101 dans le forum Langage
    Réponses: 2
    Dernier message: 24/01/2007, 12h43
  4. Réponses: 5
    Dernier message: 10/01/2007, 02h08
  5. convertisseur de classe C++ vers classe Java ?
    Par novice12 dans le forum C++
    Réponses: 3
    Dernier message: 16/12/2004, 21h37

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