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 l'objet courant (this) en paramètre à un attribut


Sujet :

C#

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    90
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 90
    Par défaut passer l'objet courant (this) en paramètre à un attribut
    Bonjour,

    J'aimerais passer l'objet courant (this) en paramètre à un attribut que j'ai créé car j'aurais besoin de lui ajouter des évènements et de le faire dans mon attribut.
    Lorsque j'essaie de donner this en paramètre, j'ai l'erreur suivante :

    Le mot clé 'this' n'est pas disponible dans le contexte actuel
    Y aurait-il un moyen de le faire ?


    Merci d'avance !

  2. #2
    Membre émérite Avatar de ctxnop
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2007
    Messages
    858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Morbihan (Bretagne)

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

    Informations forums :
    Inscription : Juillet 2007
    Messages : 858
    Par défaut
    Salut,
    Non, absolument pas possible, un attribut ne se pose pas sur une instance mais sur une classe (ou propriétés, ou méthodes, etc, bref, a pas mal d'endroit mais certainement pas sur une instance).

    Mais je n'ai pas bien compris pourquoi tu cherches à faire ca ?
    Normalement on pose un attribut sur les classes quand on à une méthode qui inspecte des types par reflexion, les attributs donnent alors un indice sur la manière de réagir.
    Par exemple, l'attribut Category posé sur une méthode est utilisé par les PropertyGrid, quand tu passe une instance d'un objet la propertygrid va analyser le type de cet objet en recherchant notamment l'attribut Category afin de savoir où place la propriété.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    90
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 90
    Par défaut
    Merci pour ta réponse.

    J'utilise un Framework nommé PostSharp qui permet d'insérer du code avant et après le corps d'une méthode en utilisant les attributs (attribut qui dérivent des classes de PostSharp.

    Mon but est de faire un log de l'utilisation de certaines winform d'un projet. Je voudrais pouvoir faire ca en apportant un minimum de modifications au code de ces winform.
    J'ai besoin de "this" afin de mettre des listeners sur ces applications pour observer leur focus...

    Merci.

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    90
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 90
    Par défaut
    Je vais expliquer un peu le fonctionnement de PostSharp :

    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
     
    [MyPostSharpAttribute()]
    public void foo ()
    {
        /// Code...
    }
     
    public sealed class MyPostSharpAttribute : ... // Classe de PostSharp
    {
        public override void OnEntry(...)
        {
              /// Code exécuté avant...
        }
     
        public override void OnExit(...)
        {
              /// Code exécuté après...
        }
    }
    va donner après compilation

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    public void foo ()
    {
        OnEntry(...);
        try
        {
            /// Corps de foo
        }
        finally
        {
            OnExit(...);
        }
    }
    Mon but est de placer ces attributs sur les constructeurs ou les InitializeComponent d'une form et de placer mes écouteurs, ca me permettrait de n'avoir qu'une ligne à rajouter dans les fichiers des forms. Mais si ce n'est pas possible, je vais devoir trouver autre chose.

    J'espère que tu comprends mieux.

    Merci encore pour ton aide

  5. #5
    Membre émérite Avatar de ctxnop
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2007
    Messages
    858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Morbihan (Bretagne)

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

    Informations forums :
    Inscription : Juillet 2007
    Messages : 858
    Par défaut
    Ne connaissant pas le framework en question je suis aller voir de quoi il s'agissait.
    Je suis de suite tombé sur http://www.sharpcrafters.com/postsha...etting-started
    Ce qui semble décrire exactement ce que tu souhaite.
    De plus, on remarque immédiatement que les méthodes OnEntry, OnExit, ..., prennent un argument.
    Quand on regarde la documentation sur le type de cet argument : http://doc.sharpcrafters.com/postsha...cutionArgs.htm

    On trouve la propriété Instance qui contient l'instance de l'objet sur lequel la méthode est exécuté. Autrement dit, le "this" que tu cherchais.

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    90
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 90
    Par défaut
    Merci beaucoup !!!

    Je vais regarder si c'est bien ce que je veux mais dans tous les cas merci .

Discussions similaires

  1. [PHP 5.0] Tableau et l'objet courant $this
    Par Alexr dans le forum Langage
    Réponses: 3
    Dernier message: 09/06/2009, 10h06
  2. Passer des objets en paramètre
    Par The eye dans le forum Général Dotnet
    Réponses: 2
    Dernier message: 04/01/2008, 16h07
  3. Réponses: 4
    Dernier message: 20/06/2007, 17h34
  4. Objet Courant This et appel à un opérateur
    Par TheOyoStyledMan dans le forum C++
    Réponses: 2
    Dernier message: 13/06/2006, 16h35
  5. [POO] débutant passer un objet en paramètre
    Par samplaid dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 02/05/2006, 12h46

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