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 :

Passer une propriété en argument sans avoir l'instance de la classe


Sujet :

C#

  1. #1
    Membre éclairé Avatar de touftouf57
    Profil pro
    Développeur .NET
    Inscrit en
    Décembre 2007
    Messages
    362
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2007
    Messages : 362
    Par défaut Passer une propriété en argument sans avoir l'instance de la classe
    Bonjour,

    Je cherche comment faire pour passer une méthode en paramètre, mais sans avoir l'instance sur laquelle elle sera exécuté.

    En clair, j'ai une classe Conteneur. dans cette classe il y a une méthode Ajoute(Object objet).
    Dans une autre classe Alimenteur, dédié à alimenter ce conteneur, je voudrais lui passer cette méthode Ajoute(..) pour qu'il l'execute dans la suite du programme. En revanche, l'instance de Conteneur, ne sera connu que lorsque l'on demandera à l'instance d'Alimenteur d'alimenter le Conteneur.

    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
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
     
    class Conteneur
    {
       ...
       public void Ajoute(Object objet){
       ....
       }
    }
     
    class Alimenteur
    {
        private Methode _methodeDAjout;
        public Alimenteur(XXXXXXX   c est ici que je souhaite fournir la méthode à executer)
        {
        ....
        }
     
        public void Alimente(Conteneur conteneur)
        {
        Contenu contenu = new Contenu();
        .....
        //Execution de la méthode d'ajout sur l'instance de conteneur
        //conteneur.Ajoute(contenu);
        }
    }
    Bien entendu, si je demande cela, c'est que parfois ce sera la méthode Ajoute(..) qui devra être executée, et d'autre fois ce sera une propriété.

    Je n'ai pas la main sur les classes Conteneur et Contenu, mais je dois les alimenter.

    Je pensais arriver à mes fins en passant par les Action<T>. Mais T défini le type du paramètre. Rien ne fait référence à la classe exécutant la méthode.

    Donc, suis-je condamnée à passer par la classe Method, ou existe-t-il un autre moyen?

    Merci

  2. #2
    Membre Expert
    Avatar de GuruuMeditation
    Homme Profil pro
    .Net Architect
    Inscrit en
    Octobre 2010
    Messages
    1 705
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : Belgique

    Informations professionnelles :
    Activité : .Net Architect
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2010
    Messages : 1 705
    Par défaut
    Et si tu mets Action<Conteneur,object> comme action dans Alimenteur?

    tu pourrais alors passer des trucs style

    Alimenteur((c,o) => c.Ajouter(o));

    ou Alimenteur((c,o) => c.propriete = o);

  3. #3
    Membre émérite
    Avatar de dkmix
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    619
    Détails du profil
    Informations personnelles :
    Localisation : Jamaïque

    Informations forums :
    Inscription : Septembre 2007
    Messages : 619
    Par défaut
    Bonjour,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    public Alimenteur (Action<Object> DelegueDeLaMethodeAjoute)
    {
    ...
    DelegueDeLaMethodeAjoute(monObjet1)
    ...
    }
    Et si tu mets Action<Conteneur,object> comme action dans Alimenteur?
    Bonne idée

Discussions similaires

  1. Réponses: 3
    Dernier message: 04/12/2012, 21h56
  2. [VB6]Comment puis-je passer une ComboBox en argument?
    Par Xan dans le forum VB 6 et antérieur
    Réponses: 20
    Dernier message: 26/02/2007, 15h03
  3. Comment passer une fonction en argument
    Par Pades75 dans le forum Langage
    Réponses: 4
    Dernier message: 16/02/2006, 10h34
  4. Transmettre une propriété en argument
    Par programaniac dans le forum Langage
    Réponses: 11
    Dernier message: 25/10/2005, 12h03
  5. Passer une fonction comme argument à une fonction
    Par Cocotier974 dans le forum Général Python
    Réponses: 4
    Dernier message: 29/06/2004, 13h41

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