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 :

Exécuter méthode d'une classe depuis une autre classe


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 57
    Par défaut Exécuter méthode d'une classe depuis une autre classe
    Bonjour,
    La question me semble un peu bizarre mais bon.
    En gros, j'ai une classe C1 contenant une méthode m1() et une classe C2 avec une méthode m2(). Est-il possible de faire une opération du style
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
     
    public void m2()
    {
        C1.m1();
    }
    Je peux aussi déclarer un objet C2 en instance de C1 et ajouter des méthodes dans C2 mais je veux juste savoir si il y a moyen de faire simple.

  2. #2
    Membre expérimenté
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Février 2008
    Messages
    159
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2008
    Messages : 159
    Par défaut
    oui si m1() est statique, sinon il faut instancier un object de type C1. Ceci dit, je suis pas bien sur d'avoir compris ta question

  3. #3
    Membre expérimenté
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    240
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 240
    Par défaut
    A priori aucun problème, C2 peut etre un membre de C1 : Variable privée ou pourquoi pas propriété publique, etc ...

  4. #4
    Membre émérite
    Inscrit en
    Octobre 2006
    Messages
    587
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations forums :
    Inscription : Octobre 2006
    Messages : 587
    Par défaut
    Il te faut un lien de dépendance entre ces classes. Si tu veux qu'une méthode de la classe C2 (en l'occurence M2) puisse appeler une méthode de la classe C1, il faut un champ d'instance de type C1 dans la classe C2. C'est le principe d'envoi de messages d'objets à objets.

    Sinon tu peux utiliser une méthode statique (comme le dit Ludo.G).

    Exemple avec un lien d'agrégation faible. Il faut que la méthode M1 ait un niveau d'encapsulation public.

    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
     
    public class C2
    {
       private C1 classeC1;
     
       public C2(C1 classe)
       {
           this.classeC1 = C1;
       } 
     
       public M2()
       {
           classeC1.M1();
       }
    }
    Sinon tu peux aussi ajouter un paramètre de type C1 à ta méthode et faire passer un argument de type C1 que tu pourra utiliser dans le corps de la méthode.

Discussions similaires

  1. Appel d'une methode depuis d'autre class
    Par giraud vias dans le forum C#
    Réponses: 3
    Dernier message: 28/12/2017, 14h17
  2. Réponses: 3
    Dernier message: 09/10/2015, 17h16
  3. [AC-2007] Copier une table depuis une base vers une autre
    Par Triton972 dans le forum VBA Access
    Réponses: 3
    Dernier message: 01/11/2009, 19h27
  4. [AS2] Atteindre attribut d'une classe depuis une fonction interne a la classe
    Par Demco dans le forum ActionScript 1 & ActionScript 2
    Réponses: 6
    Dernier message: 18/04/2006, 21h03
  5. Réponses: 3
    Dernier message: 16/01/2006, 16h02

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