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 :

Propriétés d'objets dynamiques


Sujet :

C#

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2006
    Messages
    59
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2006
    Messages : 59
    Par défaut Propriétés d'objets dynamiques
    Bonjour à tous,

    Lorsqu'on crée des ressources dans un projet par exemple, il y a du code qui est généré automatiquement pour créer des propriétés dynamiques sur l'objet Properties.Resources.

    Par exemple, on ajoute une image Cancel.png => on peut du coup accéder à cette image par MonProjet.Properties.Resources.Cancel. La propriété Cancel a donc été générée dynamiquement.

    J'aimerais savoir si il est possible de faire la même chose avec n'importe quel objet. Autrement dit, pouvoir ajouter des propriétés à cet objet dynamiquement en fonction de leur nom et type...

    D'avance merci.
    FTERF.

  2. #2
    Membre Expert
    Homme Profil pro
    Inscrit en
    Juillet 2007
    Messages
    1 277
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Réunion

    Informations forums :
    Inscription : Juillet 2007
    Messages : 1 277
    Par défaut
    Quand on parle de code ajouté dynamiquement, on parle de code ajouté à l'exécution.

    Hors le code dont tu parles est ajouté avant la compilation, pendant la phase d'édition. Il n'est donc en rien dynamique.

    C'est exactement le même phénomène qui se produit lorsque tu ajoutes un TextBox ou un Label à une Form.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2006
    Messages
    59
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2006
    Messages : 59
    Par défaut
    Oui entièrement d'accord autant pour moi

    Donc je cherche à ajouter des propriétés dynamiquement à un objet au moment de l'exécution. Comment puis-je faire ?

    Y-a-t-il des objets du FrameWork qui permettent de faire cela ?

    Merci.
    FTERF.

  4. #4
    Membre Expert
    Homme Profil pro
    Inscrit en
    Juillet 2007
    Messages
    1 277
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Réunion

    Informations forums :
    Inscription : Juillet 2007
    Messages : 1 277
    Par défaut
    C'est possible, mais je me poserais la question de "pourquoi je veux faire ça" car il est vraiment rare d'en avoir besoin car leur utilisation est loin d'être triviale. En général, il y a des façons de faire beaucoup plus simples. Définir est une chose, il faut ensuite pouvoir les utiliser.

  5. #5
    Membre émérite
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    547
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 547
    Par défaut
    Salut,

    comme dit Kaidan, reflechis bien à la pertinence de generer au runtime du code, en general, il existe tres peu de cas ou on ne peut pas faire autrement assez facilement.

    Peux tu nous donner le scenario qui d'apres toi t'oblige à générer ce code ?

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2006
    Messages
    59
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2006
    Messages : 59
    Par défaut
    Bonjour,

    Par exemple, mais il s'agit simplement d'une idée, imaginons un format de fichier (xml ou autre) assez structuré dans lequel seraient stockées des informations à dispatcher dans un objet.

    Au chargement du fichier, certaines de ces informations seraient stockées dans des propriétés de cet objet mais le format de fichier étant variable, on ne saurait pas à l'avance quelle propriété créer dans l'objet, d'où la possibilité d'en créer au moment de l'analyse du fichier.

    Reste encore à réfléchir au moyen d'exploiter ces propriétés...

    Mais en gros, voilà mon idée farfelue.

    Merci.
    FTERF

  7. #7
    Expert confirmé
    Avatar de ced600
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2006
    Messages
    3 364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Août 2006
    Messages : 3 364
    Par défaut
    Pas besoin d'ajouter du code à l'execution pour cela.

    Il te suffit de stocké l'ensemble de tes propriété du fichier dans une liste, et d'avoir une ou plusieurs méthodes de parcours de la liste qui réagisse à une propriété particulière.

    Tu fais en plus une fonction de mise à jour quimet à jour ta liste en fonction des données du fichier.

  8. #8
    Membre émérite
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    547
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 547
    Par défaut
    Mouais, j'ai un doute quant à la justification de creation runtime dans ce type de cas.

    Tu peux donner un patron d'objet encapsulant toutes les possibilités de propriétés, assigner celle contenue dans le fichier avec leur valeur et coller le reste avec des valeurs par defaut (un peu comme, un fichier de configuration pour une form, la form charge les valeurs persistées, le reste est soit hard-codé soit collé au defaut).

    En general, la creation dynamique d'objet sans une interface à implementer, ou sans classe de base donnant une patron de manipulation, ca sent souvent l'usine à gaz.

  9. #9
    Expert confirmé
    Avatar de ced600
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2006
    Messages
    3 364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Août 2006
    Messages : 3 364
    Par défaut
    +1

    Si tu as un but bien précis il y a certainement un meilleur moyen

    Plus c'est dynamique, plus il est difficille de faire un code qui ne ressemble pas à une usine à gaz.
    Il faut passer beaucoup de temps à la conception de ton application.

  10. #10
    Membre Expert
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 103
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 103
    Par défaut
    A moins que ton projet ne ressemble à celui auquel je reflechi et qui permet de convertir une suite logique descriptive en code pour l'exécuter plus vite qu'en passant par une machine virtuelle, et où là tu aurais effectivement un problème inhérant au typage que tu ne pourrait résoudre qu'a l'exécution... je ne vois vraiment pas pourquoi tu aurais besoin d'un tel système.

    Dit toi bien une chose. Plus ton code possède d'artifices dynamiques... plus il sera long à exécuter. Ensuite il sera beaucoup plus complexe.

    Dans le cadre de l'application que je développe, les modules sont certes très simples, mais le noyau est une usine à gaz de plus de milles classes avec de la génération dynamique de code en veux tu en voila, de la liaison dynamique tardive, des choses absolument abracadabrantes, vu qu'il se comporte comme un framework... Mais à moins que ton application ne ressemble de près ou de loin à un framework... je vois pas l'intérêt d'une telle technique... ULTRA COMPLEXE a mettre en oeuvre mais surtout à maintenir.

Discussions similaires

  1. [PowerBuilder] Création d'objets dynamiques
    Par Béné123456789 dans le forum Powerbuilder
    Réponses: 3
    Dernier message: 12/06/2006, 00h33
  2. [C#] Accéder à un objet dynamiquement ?
    Par webtheque dans le forum ASP.NET
    Réponses: 10
    Dernier message: 14/04/2005, 15h54
  3. [Reflection] Créer un tableau d'objets dynamiquement.
    Par salome dans le forum API standards et tierces
    Réponses: 2
    Dernier message: 25/03/2005, 18h59
  4. [FLASH MX2004] Création d'objet dynamiquement
    Par noarno dans le forum Flash
    Réponses: 3
    Dernier message: 15/12/2004, 11h00
  5. Evenement sur objet dynamique
    Par CanardJM dans le forum AWT/Swing
    Réponses: 8
    Dernier message: 19/11/2004, 13h56

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