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 :

Modifier dynamiquement le code source d'une classe


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : Tunisie

    Informations forums :
    Inscription : Juin 2010
    Messages : 43
    Par défaut Modifier dynamiquement le code source d'une classe
    Bonjour,
    j'aimerai savoir comment je peux modifier le code source d'une classe dans mon application dynamiquement , en fait , j'ai une énumération que je veux modifier ses éléments , je veux ajouter des nouvelles méthodes , des nouveaux attributs,..

    y a t-il un exemple ?
    Merci d'avance
    Cordialement.

  2. #2
    Membre émérite Avatar de chamamo
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    588
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 588
    Par défaut
    modifier dynamiquement? c'est du choinois ya Mahdi

    ce n'est pas l'héritage que tu cherche?
    peux tu détailler un petit peu ton probleme?

  3. #3
    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,
    En fait, oui et non, tout dépend de ce que tu veux faire exactement et des contraintes techniques que tu peux accepter. Si j'ai bien compris ce que tu cherches à faire, c'est modifier un type pendant l'exécution du programme.
    Pour les enum je ne suis pas sur que ce soit possible, pour un type existant non plus d'ailleur.
    Par contre, on peut créer de nouveaux types et les utiliser. Ces types peuvent être des wrapper à un type existant, ou même dérivé d'un type existant.
    Pour ce faire tu as deux solutions à ma connaissance :
    - te servir du compilateur. Tu peux générer un code source en C# ou en VB.Net, puis en te servant du compilateur tu génère un assembly en mémoire, enfin, tu instancie ton type via la reflection.
    - te servir de System.Reflection.Emit. Il s'agit d'un namespace dans lequel tu trouvera quelques objets qui te permettent de créer dynamiquement du MSIL et de l'utiliser. Personnellement je n'ai rien réussit à obtenir avec ca, il faut tout de même bien connaitre le MSIL et c'est pas du tout évident.

    On peut aussi "mentir" sur un type. C'est pratique dans certains cas comme par exemple quand tu place un objet dans une grille de propriété qui affiche alors les propriétés de l'objet et leurs valeurs (exactement comme la grille de propriété de Visual Studio). On peut aussi placer un proxy entre deux objets. Le principe étant de créé un objet qui sera retourné à la place de celui attendu. Ca ressemble énormément au polymorphisme dans le principe, mais ca passe par un mécanisme interne du .Net et non pas l'héritage (un ptit lien qui en parlera mieux que moi, ya même un peu d'Emit dedans : http://tdanecker.blogspot.com/2007/0...h-proxies.html)

    Par exemple, dans mon cas, j'avais des objets que je plaçais dans une grille de propriété, mais je ne devais pas afficher toutes les propriétés.
    J'ai donc créé un objet qui encapsule n'importe quel objet (il prend un system.Object) et il implémente ICustomTypeDescriptor, ainsi, au lieu de lié mon objet à la grille, je place plutot le wrapper. De cette manière, quand la grille interroge l'objet sur sa structure, mon wrapper peut lui mentir et lui dire ce qu'il veut.
    Quand au proxy je m'en suis servit pour générer du code C# de ce qu'a fait l'utilisateur. Ca permet, par exemple, en cas de crash, d'avoir un code C# qui refait exactement ce qu'a fait l'utilisateur dans le but de reproduire le crash.

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : Tunisie

    Informations forums :
    Inscription : Juin 2010
    Messages : 43
    Par défaut Merci
    en fait , je veux utiliser le codedom mais le problème que je cherche à modifier un code source et pas à le créer à partir de zéro .

    Merci

  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
    Ah ca je m'y suis pas encore attaqué, je devrais le faire dans quelques semaines/mois, mais pour le moment je ne connais pas le sujet, navré.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Récupérer et modifier le code source d'une classe
    Par aA189 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 14/07/2008, 11h43
  2. Modifier un code source via une autre appli XLS
    Par dialdre dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 19/10/2007, 08h10
  3. Modifier un code source via une autre appli XLS
    Par miko91 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 09/08/2007, 15h00
  4. [AJAX] Code source d'une page générée dynamiquement
    Par Amnesiak dans le forum Langage
    Réponses: 3
    Dernier message: 20/02/2007, 18h06
  5. [Juridique] Comment réutiliser le code source d'une classe ?
    Par mathieu dans le forum Général Java
    Réponses: 8
    Dernier message: 17/05/2004, 13h40

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