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

Framework .NET Discussion :

[DotNet - Attributs] Créer ses propres attributs: mais pour quoi faire?


Sujet :

Framework .NET

  1. #1
    Membre éprouvé
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    585
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 585
    Points : 1 139
    Points
    1 139
    Par défaut [DotNet - Attributs] Créer ses propres attributs: mais pour quoi faire?
    Bonjour.
    Créer ses propres attributs: mais pour quoi faire?
    C'est une question que je me pose depuis longtemps et le tuto du jour sur le sujet remonte la question dans mon esprit. Je dois dire que, malheureusement, rien de ce que j'ai lu jusqu'alors n'a répondu à ma question!
    Je fais de la programmation pour m'amuser ("just for fun"), des codes de 2 pages comme des "gros" pouvant atteindre 10 fichiers et 1000 lignes... . Tout celà pour dire que ma démarche n'est en rien professionnelle! Par curiosité et intérêt personnel, je tente toujours d'utiliser un maximum des possibilités d'un langage ou d'un environnement. Non que ce soit absolument utile, mais toujours pour "comprendre".
    Si j'ai bien compris le fonctionnement des Attributs personnalisés (ces fameuses classes dont le nom se termine par "Attribute"), j'en cherche toujours une utilisation possible dans le cadre de ma programmation ludique. Je ne parle pas d'un projet avec des Windows Forms dans tous les sens et des centaines de classes, mais d'un petit quelque chose (même en sortie console), allant de la gestion (classique) d'un fichier de copains à l'inévitable casse-briques ou space-invaders.
    Auriez-vous des exemples de ce genre, applications modestes mais où l'usage de l'Attribut est utile, voire nécessaire et inévitable?
    Merci
    L'avis publié ci-dessus est mien et ne reflète pas obligatoirement celui de mon entreprise.

  2. #2
    Rédacteur
    Avatar de dev01
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    2 451
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 2 451
    Points : 6 017
    Points
    6 017
    Par défaut
    Salut.

    tu peux lire mon tuto sur le sujet :
    - MVP C#
    -Tout problème a une solution, le vrai problème est de trouver la solution .....
    - Linux & mono : l'avenir

  3. #3
    Membre actif
    Profil pro
    Inscrit en
    Février 2006
    Messages
    413
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2006
    Messages : 413
    Points : 286
    Points
    286
    Par défaut
    Tout est une question de choix.
    Si tu prends par exemple l'attribut Serializable, tu pourrais très bien implémenter une interface pour dire que ta classe est sérialisable ou pas.


    Je n'utilise pas souvent non plus les attributs personnalisés.
    Un cas où je les ai trouvés utiles est le suivant :

    J'ai créé une libraire pour écrire des fichiers dxf.
    Je vais te passer la logique interne des fichiers mais en gros tu as des objets de dessins (Ligne, arc, ...) dont chaque propriété/attribut est précédé par un nombre pour indiquer de quel attribut il s'agit. Par exemple 10 = Position X, 11 = Y, 12 = Z, 30 = épaisseur de trait, ...(je ne me souviens plus exactement mais ça n'a pas d'importance).
    Comme j'ai représenté chaque objet par une classe et des propriétés, c'était plus simple pour moi, lorsque je les sauvegardais sur fichier, d'utiliser un attribut personnalisé pour indiquer si une propriété devait être sauvée dans le fichier (j'avais certaines propriétés qui me facilitaient la vie lorsque j'utilisais ma classe mais qui n'existaient pas dans des fichiers DXF), et pour indiquer également quel numéro devait être utilisé pour indiquer cette propriété dans le fichier dxf.
    Ainsi, pour n'importe quelle classe représentant un objet pouvant être sauvé dans un fichier dxf, j'utilisais exactement le même code, et peut importe si j'ajoutais de nouvelles classes ou de nouvelles propriétés, le code pour sauvegarder me classes ne changeait absolument pas.

    Voilà, je ne sais pas du tout si c'est l'exemple le plus explicite, ni le plus simple, mais c'est une utilité que j'ai trouvée aux attributs.

    EDIT : après relecture, j'ai trouvé utile de préciser que je ne suis pas responsable du format interne des fichiers dxf, c'est un format "standard" pour l'échange d'informations entre logiciels CAO.

  4. #4
    Membre éprouvé
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    585
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 585
    Points : 1 139
    Points
    1 139
    Par défaut
    Citation Envoyé par dev01
    Salut.
    tu peux lire mon tuto sur le sujet :
    Bonjour.
    C'est justement après lecture de ce tuto ce matin que pas mal d'autres que j'avais lus préalablement sur le sujet me sont revenus en tête, ou plutôt que la question que je m'étais posée alors et qui n'a toujours pas trouvé de réponse à mes yeux m'est revenue à l'esprit: mais à quoi ça sert?
    Je note l'exemple que rapporte NicolsJolet: faire la différence entre plusieurs propriétés, certaines "standards" sauvegardées, d'autres non. C'est sans doute faisable avec une simple énumération des propriétés à sauvegarder, ou bien une liste, ou encore un autre moyen de même type qui permettrait à la procédure de sauvegarde de choisir si oui ou non elle sauvegarde... Mais je vais réfléchir à l'idée de l'attribut dans ce cas: c'est sûrement une solution plus "belle".
    Merci
    L'avis publié ci-dessus est mien et ne reflète pas obligatoirement celui de mon entreprise.

  5. #5
    Rédacteur
    Avatar de dev01
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    2 451
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 2 451
    Points : 6 017
    Points
    6 017
    Par défaut
    Citation Envoyé par Thorna
    Je note l'exemple que rapporte NicolsJolet: faire la différence entre plusieurs propriétés, certaines "standards" sauvegardées, d'autres non. C'est sans doute faisable avec une simple énumération des propriétés à sauvegarder, ou bien une liste, ou encore un autre moyen de même type qui permettrait à la procédure de sauvegarde de choisir si oui ou non elle sauvegarde... Mais je vais réfléchir à l'idée de l'attribut dans ce cas: c'est sûrement une solution plus "belle".
    Merci
    l'avantage énorme que tu as avec les attributs c'est que c'est un système vachement souple et très puissant ... et surtout avec le même code (pratiquement) tu peux manipuler plusieurs attribut.

    Mais plus fort encore, essai de donner une valeur string à ton enum ... tu fait comment ? tu redeveloppes un système entier ?
    - MVP C#
    -Tout problème a une solution, le vrai problème est de trouver la solution .....
    - Linux & mono : l'avenir

  6. #6
    Membre éprouvé
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    585
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 585
    Points : 1 139
    Points
    1 139
    Par défaut
    Citation Envoyé par dev01
    Mais plus fort encore, essai de donner une valeur string à ton enum ... tu fait comment ? tu redeveloppes un système entier ?
    Euh... ToString() ?
    Sans rire, j'aimerais bien avoir l'exemple avec les attributs! Merci
    L'avis publié ci-dessus est mien et ne reflète pas obligatoirement celui de mon entreprise.

  7. #7
    Membre expérimenté Avatar de Mose
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 143
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 143
    Points : 1 379
    Points
    1 379
    Par défaut
    Citation Envoyé par dev01
    l'avantage énorme que tu as avec les attributs c'est que c'est un système vachement souple et très puissant ... et surtout avec le même code (pratiquement) tu peux manipuler plusieurs attribut.
    Ouais, mais, parallèlement il est plus complexe, plus difficilement maintenable et tend vers l'ésotérisme
    C'est une peu de la programmation dans la programmation, ça rejoins un peu la programmation orientée aspect, mais sans se l'avouer.
    Je trouve ça dommage de rajouter ce genre de gadget alors qu'on pourrait très bien s'en passer si MS n'avait pas bridé la POO... (oui oui, je pense à l'héritage multiple)
    Citation Envoyé par dev01
    Mais plus fort encore, essai de donner une valeur string à ton enum ... tu fait comment ? tu redeveloppes un système entier ?
    J'ai pas bien compris ce que tu entendais pas là, mais je suis très intéressé par la réponse.

  8. #8
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 30
    Points : 31
    Points
    31
    Par défaut
    Exemple d'utilisation :
    Pour un projet j'ai développé plusieurs UserControls, marqués d'un attribut perso. Le but en gros étant de pouvoir rajouter des biblio de controles sans relivrer le projet.
    Je peux donc à partir de là, en faisant un peu de reflection, parcourir mes DLL, chercher mes classes marquées, les instancier, et les ajouter à ma page. MAis ca n'est qu'un exemple. Après effectivement les attributs comme serializable, tu as des chances d'êtres amenés à les utiliser pour des cas basiques.

  9. #9
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Points : 13 314
    Points
    13 314
    Par défaut
    Citation Envoyé par Thorna
    Bonjour.
    Créer ses propres attributs: mais pour quoi faire?
    Piloter des designers spécifiques par exemple.

    Je fais de la programmation pour m'amuser ("just for fun"),
    Cela explique peut être que tu n'en vois pas l'utilité; rien de péjoratif dans ma remarque, mais simplement tu ne penses pas les choses forcément en terme de réutilisabilité, de framework applicatif livrable, etc ...

    Nota : personnellement la programmation ne m'a jamais "amusée"



    Auriez-vous des exemples de ce genre, applications modestes mais où l'usage de l'Attribut est utile, voire nécessaire et inévitable?
    Merci
    La derniére utilisation que j'en ai eu, par exemple, remonte à quelques jours : ajout d'attributs aux propriétés d'objets Actitivity "customisés" pour piloter un workflow designer spécifique à une application, afin de modifier le comportement standard de binding de propriétés de WWF.

    Mais je n'ai pas d'exemple "simples" (du style qu tiennent sur moins de 1000 lignes de code).

    Je ne réponds pas aux questions techniques par MP ! Le forum est là pour ça...


    Une réponse vous a aidé ? utiliser le bouton

    "L’ennui dans ce monde, c’est que les idiots sont sûrs d’eux et les gens sensés pleins de doutes". B. Russel

Discussions similaires

  1. [eZ Publish] Créer son propre attribut / datatype
    Par ricozor dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 3
    Dernier message: 11/01/2012, 13h21
  2. Réponses: 12
    Dernier message: 11/08/2010, 08h53
  3. Réponses: 5
    Dernier message: 03/08/2007, 09h24
  4. Programme permettant de créer ses propres paquets TCP/UDP
    Par mat087 dans le forum Développement
    Réponses: 6
    Dernier message: 21/05/2004, 21h42

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