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 du code source au code MSIL


Sujet :

C#

  1. #1
    Membre habitué Avatar de titourock
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2008
    Messages
    156
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2008
    Messages : 156
    Points : 190
    Points
    190
    Par défaut Passer du code source au code MSIL
    Bonjour à tous,

    Je cherche des sources ou une explication afin de traduire ce code en MSIL :

    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
    20
    21
    22
    23
    24
    25
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
     
    namespace Project2
    {
        class Bidule
        {
            private string s1;
            private string s2;
            private string s3;
            private string s4;
     
     
            public Bidule(string s1, string s2, string s3, string s4)
            {
                this.s1 = s1;
                this.s2 = s2;
                this.s3 = s3;
                this.s4 = s4;
     
            }
        }
    }
    Pourquoi me direz vous? Eh bien tout simplement car je cherche à faire la même chose mais pour un constructeur à n arguments (où n est non connu à la compilation), c'est à dire faire de l'introspection. J'ai regardé un exemple de code d'un constructeur à un seul argument mais je dois avouer ne pas tout saisir...

    Merci d'avance pour votre aide

  2. #2
    Membre expérimenté
    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
    Points : 1 521
    Points
    1 521
    Par défaut
    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
    20
     
    using System;
    using System.Collections.Generic;
     
    namespace Project2 {
     
        public class Bidule {
     
            private List<string> myStrings;
     
            public Bidule(params string[] args) {
               myStrings = new List<string>();
               foreach(string arg in args) {
                  myStrings.Add(arg);
               }
            }
     
        }
     
    }
    Pourquoi faire compliqué quand on peut faire simple hein ?

  3. #3
    Membre habitué Avatar de titourock
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2008
    Messages
    156
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2008
    Messages : 156
    Points : 190
    Points
    190
    Par défaut
    En fait j'ai besoin d'avoir des attributs distincts et non un attribut qui soit une collection car cette classe est amenée à être bindée sur une datagrid wpf Ainsi, chacun de mes attributs sera une colonne de cette datagrid. Dans le cas d'un attribut collection la datagrid ne sera pas remplie...(ou alors pas comme je le veux)

  4. #4
    Membre émérite Avatar de Guulh
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    2 160
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2007
    Messages : 2 160
    Points : 2 925
    Points
    2 925
    Par défaut
    Le binding ne fonctionne pas seulement qu'avec les propriétés directement définies dans le code de la classe. cf par exemple la DataTable.
    Tu peux implémenter je sais plus quelle interface (je crois que c'est ITypeDescriptor) pour pouvoir forcer au runtime la liste des propriétés.

  5. #5
    Membre habitué Avatar de titourock
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2008
    Messages
    156
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2008
    Messages : 156
    Points : 190
    Points
    190
    Par défaut
    Merci pour vos réponses, je regarde l'interface TypeDescriptor qui permet de modifier la vue mais j'ai également regardé la compilation à la volée que j'arrive à faire dans des cas simples mais j'ai un soucis lorsque je dois importer dans mon code compilé à la volée une classe déjà préexistante de mon projet.

    J'ai essayé ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    AssemblyName o = Assembly.GetAssembly(typeof(Position)).GetName();
    CompilerParameters parameters = new CompilerParameters(assemblyName);
    CompilerResults results = icc.CompileAssemblyFromSource(parameters, code);
    (où "Position" est une classe que j'ai créée dans mon projet et "code" mon code en dur à compiler)

    mais il me dit que le chemin de métadonnées est introuvable.
    Quelqu'un aurait-il une idée?

  6. #6
    Membre émérite Avatar de Guulh
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    2 160
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2007
    Messages : 2 160
    Points : 2 925
    Points
    2 925
    Par défaut
    Tripatouiller des classes au runtime, y'a effectivement des cas, complexes, où ça se justifie.

    Mais pas besoin d'être aussi imaginatif (à part pour l'exercice, ce qui est certes instructif) pour binder des données métier à une grille.

  7. #7
    Membre habitué
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    177
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 177
    Points : 130
    Points
    130
    Par défaut
    Regarde du coté du coach C# Atelier 3, ça ressemble à ce que tu veux faire

    Donner des nom précis aux colonnes (pas forcément ceux de l'attribut)
    Choisir quelles colonnes afficher et dans quel ordre

    C'est très bien expliquer (la preuve c'est que j'ai réussi )

Discussions similaires

  1. [Android Source] Modification Code Source
    Par Tux++ dans le forum Android
    Réponses: 1
    Dernier message: 07/11/2013, 14h36
  2. Attach source : DEBUG =>Code Source incorrecte
    Par Nexussmb dans le forum Eclipse Java
    Réponses: 1
    Dernier message: 05/09/2009, 00h30
  3. Code barre - Recherche code source
    Par Freud44 dans le forum C++
    Réponses: 11
    Dernier message: 03/06/2008, 14h17
  4. traduire code uml en code source
    Par open_source dans le forum EDI/Outils
    Réponses: 2
    Dernier message: 16/11/2007, 10h00

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