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

Dotnet Discussion :

CodeDOM vs Compilation de fichier


Sujet :

Dotnet

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Septembre 2006
    Messages
    107
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Septembre 2006
    Messages : 107
    Par défaut CodeDOM vs Compilation de fichier
    Bonjour,

    Dans le cadre de mon projet de mémoire, je dois générer des fichiers pour créer une couche ORM.
    Je suis en train de faire quelques tests avec DOM et je suis en train de me demander si j'aurais pas plus vite fait de d'ouvrir un fichier d’écrire directement les lignes de codes que je veux générer plutôt que de passer par du DOM.

    A votre avis quelles est l'avantage du DOM a part un plus au niveau hiérarchie des éléments du au graphes ... ?
    EDIT : + Possibilité de générer les classes en plusieurs langages (c'est un bon avantage ça quand même)

    N'hésiter pas a me le dire si ma question n'est pas clair.

    Et je ne sais pas trop où poster concernant ce sujet mes questions étant souvent entre plusieurs sujet.

  2. #2
    Membre très actif
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2007
    Messages
    871
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Février 2007
    Messages : 871
    Par défaut
    Salut,

    CodeDom c'est la loose en terme de lisabilité, complexité, d'écriture etc... Mais je pense que c'est toujours mieux que d'ecrire une classe à la main.

    Parmis les autres avantages, tu pourras également compiler directment ton code généré et l'excécuter.

    Bonne chance car c'est long (la première fois) et laborieux (à chaque fois).

    Edit: une foix que tu aura bien galéré avec codedom et que connaitra son fonctionnement global (expression, statement) regarde du coté de refly qui est un wrapper de codedom qui te permet d'ètre beaucoup plus productif.

  3. #3
    Membre confirmé
    Inscrit en
    Septembre 2006
    Messages
    107
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Septembre 2006
    Messages : 107
    Par défaut
    OK merci pour tes encouragement.

    Je viens de bien galérer a essayer de générer cette ligne de code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SqlConnection con;
                con = new SqlConnection(ConfigurationManager.ConnectionStrings["DB"].ConnectionString);


    Par contre je me lancerai bien directement dans refly, je suis au début de mon projet et j'ai encore beaucoup de code à générer mais tu sembles penser que ce n'est pas forcément la bonne solution de commencer par refly , pourquoi ?

  4. #4
    Membre très actif
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2007
    Messages
    871
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Février 2007
    Messages : 871
    Par défaut
    Refly est un wrapper de codeDom, te permettra d'écrire en moins de lignes la même logique, donc de ce coté c'est tout du bon.

    Par contre tu manipules toujours plus ou moins des expressions et des statements, donc c'est (à mon sens) mieux d'avoir une idée des objets que tu manipules, mais passer directement à refly est sans-doute possible et plus rapide que de regarder l'un puis l'autre.

    Voici un exemple que j'ai réalisé qui permet de générer une implémentation d'interface préalablement définie (ou je marie donc refly et la reflexion)

    Attention ça tache!
    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
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
     
    /// <summary>
    /// Créer le proxy physique
    /// </summary>
    /// <param name="type">interface source</param>
    public void CreateProxy(Type type)
    {
    NamespaceDeclaration ns = new NamespaceDeclaration("Impl");
    ClassDeclaration maClass = ns.AddClass(type.Name.Remove(0, 1));
     
     
    // set base class as CollectionBase
    maClass.Parent = new TypeTypeDeclaration(typeof(BaseSession));
    maClass.Interfaces.Add(type);
     
    // default constructor
    maClass.AddConstructor();
     
    int compteurPropriete = 0;
    //on surcharge le getter et setter
    foreach (PropertyInfo member in type.GetProperties())
      {
      maClass.AddProperty(member.PropertyType, member.Name);
      //on retourne
      //return (int?)GetValueFromSession(member.Name);
      maClass.Properties[compteurPropriete].Get.Add(Stm.Return(Expr.This.Method("GetFromSession").Invoke(Expr.Prim(member.Name)).Cast(member.PropertyType)));
     
      //le set
      //SetValueToSession(member.Name, value);
      maClass.Properties[compteurPropriete].Set.Add(Expr.This.Method("SetToSession").Invoke(Expr.Prim(member.Name), Expr.Value));
     
      compteurPropriete++;
      }
     
    CodeGenerator gen = new CodeGenerator();
    gen.CreateFolders = true;
    gen.GenerateCode("monChemin\\Dossier", ns);
    Dans tous les cas, certaines fonctionnalités du language ne seront pas possibles:
    • link
    • enum
    • foreach

Discussions similaires

  1. [MASM] Compiler un fichier .sys ?
    Par - Robby - dans le forum x86 16-bits
    Réponses: 12
    Dernier message: 08/01/2008, 11h28
  2. [Info]Comment compiler un fichier sans le lancer ?
    Par blan dans le forum Eclipse Java
    Réponses: 2
    Dernier message: 10/10/2005, 17h03
  3. [SOAP]Compilation du fichier stdsoap2.cpp (gSoap)
    Par Neo41 dans le forum C++Builder
    Réponses: 2
    Dernier message: 11/02/2005, 14h55
  4. Réponses: 1
    Dernier message: 18/06/2004, 01h12
  5. Réponses: 2
    Dernier message: 25/10/2002, 22h19

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