begin process at 2012 02 11 13:42:46
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C#

 > 

Système

 > 

Autre

 > 

Custom attribute - Fonctionnement


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Custom attribute - Fonctionnement

mercredi 11 juin 2008 à 13:00:34 | Custom attribute - Fonctionnement

t00f

Bonjour à tous,

J'aimerais en savoir plus sur l'utilisation des custom attributes ( la documentation Msdn est assez pauvre à ce niveau, enfin je trouve !)

Voilà j'aimerais savoir si :
- l'attribut est executé avant la méthode qui le porte ?
- Comment appeller une fonction spéciale de l'attribut ?
- Peut-on intéragir avec un élément de la méthode / propriété ?


Exemple : Si j'ai un attribut personnalisé customAttribute qui possède une méthode modify(), comment faire pour appeller la méthode modify avant que le code de MyMethod ne soit executé ?

    [customAttribute()]
    public int MyMethod(...) {
        // Code ...

    }
mercredi 11 juin 2008 à 13:47:57 | Re : Custom attribute - Fonctionnement

leprov

Réponse acceptée !
L'attribut n'est pas executé. je pense que tu n'as pas bien compris ce que sont les attributs en fait.
L'attribut permet simplement d'associer des métadonnées a la portion de code sur laquelle il porte. Ainsi, ton code exemple ne fais qu'appliquer la métadonnée "mymethod possède en tant que métadonnées, dans le code compilé, une instance de customattribute, ne contenant pas d'autre data que le simple fait que cet attribut est présent".
Ainsi, cest uniquement du code personnalisé qui va te permettre de réagir a la présence ou non de ton attribut (et de traiter les données potentielles de ton attribut). Ton seul moyen de faire qqch de cet attribut est d'avoir a un endroit, une méthode personnalisée, qui recherche les méthodes portant cet attribut par réflexion, et d'executer un code perso.

Typiquement, lorsque tu va, par exemple, mettre l'attribut "category" sur une propriété d'un objet graphique, cela ne fait qu'indiquer qu'une category existe sur ta propriété. si tu veux l'utiliser libre a toi. cependant, l'objet utilisé par le designer (et que tu peux utiliser par ailleurs) qui affiche les propriétés de ton objet se sert de cette propriété. tout simplement, lorsque le tableau des propriétés est chargé, il a une méhtode qui dit "je cherche les propriétés possédant l'attribut category, et je range mes propriétés en fonction de ceci dans mon affichage". mais cest tout.

bref, tes custom attributes ne te permettent que d'avoir des métadonnées utiles pour la reflexion


mercredi 11 juin 2008 à 14:01:33 | Re : Custom attribute - Fonctionnement

t00f

D'accord, je comprends mieux l'utilité de l'attribute !

En fait, je pensais utiliser un attribut pour pouvoir, lors d'un appel à une propriété, effectuer un traitement spécial. Y'aurait-il un moyen pour faire cela (sans les attributs bien sûr) ?

Exemple :

    class Toto{
        
          private string name;

          public String Name{
             get{
                   // Effectuer un long traitement générique sur name
                   .... ?
                   // Renvoyer name;
                   return this.name;
             }
             set{

              }
          }
    }
mercredi 11 juin 2008 à 14:06:35 | Re : Custom attribute - Fonctionnement

t00f

J'ai oublié de préciser que je voulais sortir le traitement long de la méthode get :)

mercredi 11 juin 2008 à 14:26:23 | Re : Custom attribute - Fonctionnement

leprov

je ne comprend pas ce que tu cherche a faire...pourquoi ne pas tout betement appeler une méthode pour ton traitement long? pour ce que tu veux faire tu ne pourras pas utiliser les attributs (et meme si tu pouvais, quel interet particulier de le faire?)


mercredi 11 juin 2008 à 14:38:26 | Re : Custom attribute - Fonctionnement

t00f

J'aimerais répondre à un événement.

Du genre, si mon utilisateur fait un get, que le système s'arrange d'abord pour effectuer un traitement (transparent au développeur) qui charge des données, enregistre quelque chose ou autre.


En fait, je sais qu'au niveau de la sérialisation personnalisée, en utilisant l'attribut serializing, le système comprends qu'il doit utilisé la fonction pendant qu'il est en train de sérialiser. Je pensais essayer de faire un peu la même chose...
mercredi 11 juin 2008 à 15:32:56 | Re : Custom attribute - Fonctionnement

Nikoui

Ce que tu cherches a faire relève de l'AOP (Aspect Oriented Programming), regardes par exemple du côté de Postsharp, tu devrais trouver ton bonheur :

Postsharp


Working as designed
www.nikoui.fr
mercredi 11 juin 2008 à 16:54:56 | Re : Custom attribute - Fonctionnement

leprov

pourquoi ne pas juste appeler une méthode? qu'est ce qui te gene dans cette facon de faire sachant que ton traitement sera effectivement fait?

class Toto{
        
          private string name;

          public String Name{
             get{
                   PerformTruc();
                   .... ?
                   // Renvoyer name;
                   return this.name;
             }
             set{

              }
          }
    }

mercredi 11 juin 2008 à 18:30:58 | Re : Custom attribute - Fonctionnement

t00f

Très Très intéressant ce PostSharp ! Merci beaucoup ;)

Vu que je suis un peu chiant sur les bords, je vais pas dire que pour l'instant, qu'il ne supporte pas le compact framework. Je vais essayer de mon côté voir s'il y'a des choses à faire.



mercredi 11 juin 2008 à 19:55:21 | Re : Custom attribute - Fonctionnement

leprov

tu n'as toujours pas répondu a ma question : pourquoi ne peux tu pas simplement appeler une méthode? je ne vois absolument pas le soucis que tu rencontres



1 2

Cette discussion est classée dans : méthode, fonctionnement, attribut, custom, attribute


Répondre à ce message

Sujets en rapport avec ce message

[.net2] recherche d'un attribut [ par Willi ] Bonjour CSharpiens et CSharpiennes Il y a l'attribut obsolete pour informer que tel ou tel méthode ou propriété n'est pas conseillé à utiliser.Mais ex Problème de changement de valeur dans un attribut avec XPathNodeIterator [ par The Red Man ] Salut à tous !Je suis confronté a un problème que j'arrive pas a résoudre. En effet, je n'arrive pas ou plutot je ne peut pas modifier la valeur d'un Assembly: custom attributes [ par jusob ] Bonjour, j'utilise des custom attributes du genre: [assembly:AssemblyTitle("First plugin")] [assembly:AssemblyCompany("MySelf")] [assembly:Assemb Tableau trier help [ par emmanuel9 ] Bonjour, Je chercher à trier un tableau de x élements dans utiliser de méthode comme sort. Quel méthodes de tries me conseilleriez vous et surtout com [C#] Acceder à la méthode d'une autre form [ par nitrique ] Bonjour, Je débute... J'ai deux forms, ma principale (Pri) qui est la MDI mère et une autre (Sec) qui est une MDI fille. Dans Pri, j'ai une méthode p [C#] comprehension méthode SQLCommand [ par bibicool ] Bonjour à tous,Voilà je travaille avec C# et SQLserver pour mon boulot et je suis en train de faire quelques tests. Je me rends compte qu'il est très méthode emploi de session [ par engelho ] Bonjour,Je viens de commencer le langage c# et ai voulu utiliser les sessions afin d'utiliser des variables dont la portée serait tout le site. Or, j' ThreadStart avec méthode avec paramètres [ par benjibtsig1 ] J'aimerai savoir comment l'on uitiliserai un ThreadStart avec l'appel d'une méthode disposant d'un paramètres, je fais ceci : public void</FONT Méthode Resize...Comment faire ? :( [ par sphaxslayer ] Bonjour tout le mondeVoilà, en fait j'ai un problème, je ne sais pas du tout comment implémenter la méthode Resize de ma ListBox...Mon application se C# Accès à une winform depuis une methode static [ par cyrare ] Bonjour, Je fais une appli windows en C#, et je voudrais modifier une textbox, à partir d'une méthode static. Le problème, c'est que je ne trouve pas


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,577 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales