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 :

Classe Dynamique et Mot Clé Dynamic


Sujet :

C#

  1. #1
    Membre chevronné Avatar de Jerede
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mai 2010
    Messages
    271
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mai 2010
    Messages : 271
    Par défaut Classe Dynamique et Mot Clé Dynamic
    Bonsoir,

    J'ai un petit problème avec le mot clé dynamique

    Je créer une classe dynamiquement, comme ceci
    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
    var asm = AppDomain.CurrentDomain.DefineDynamicAssembly(new AssemblyName("DynAsm"), AssemblyBuilderAccess.Run);
     
                var mod = asm.DefineDynamicModule("DynMod");
     
                var type = mod.DefineType("DynType");
     
                var ttt = type.DefineField("DynField", typeof(string), FieldAttributes.Public);
     
                var ctor = type.DefineConstructor(MethodAttributes.Public, CallingConventions.Standard, Type.EmptyTypes);
     
                var il = ctor.GetILGenerator();
     
                il.Emit(OpCodes.Ret);
     
                var t = type.CreateType();
     
                dynamic k = Activator.CreateInstance(t);
    On a donc un objet k de type "DynType" et qui dispose d'un champ "DynField".

    Malheureusement, l'accès au champ entraîne une RuntimeBinderException.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var result = k.DynField;
    Et l'erreur :

    'object' ne contient pas de définition pour 'DynField'

    Le mot clé 'dynamic' est t'il donc inutilisable sur les types crées dynamiquement ?

  2. #2
    Rédacteur
    Avatar de Nathanael Marchand
    Homme Profil pro
    Expert .Net So@t
    Inscrit en
    Octobre 2008
    Messages
    3 615
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Expert .Net So@t
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2008
    Messages : 3 615
    Par défaut
    Tu me recopieras 100fois "un membre ne peut pas être plus accessible que sa classe"!

    Et tu changeras ton code avec cette ligne:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var type = mod.DefineType("DynType", TypeAttributes.Public);

  3. #3
    Membre chevronné Avatar de Jerede
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mai 2010
    Messages
    271
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mai 2010
    Messages : 271
    Par défaut
    Ahh ça marche excellent
    Y'a tellement de surcharges qu'on s'y perd facilement, j'aurai cru qu'elle était public par défaut.

  4. #4
    Rédacteur
    Avatar de Nathanael Marchand
    Homme Profil pro
    Expert .Net So@t
    Inscrit en
    Octobre 2008
    Messages
    3 615
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Expert .Net So@t
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2008
    Messages : 3 615
    Par défaut
    Citation Envoyé par Jerede Voir le message
    Ahh ça marche excellent
    Y'a tellement de surcharges qu'on s'y perd facilement, j'aurai cru qu'elle était public par défaut.
    Nop C'est comme quand tu codes, la visibilité par défaut est internal

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

Discussions similaires

  1. [Introspection] Resultset Classe dynamique
    Par lucimast dans le forum API standards et tierces
    Réponses: 2
    Dernier message: 07/02/2007, 10h10
  2. Réponses: 4
    Dernier message: 18/01/2007, 05h46
  3. Réponses: 5
    Dernier message: 06/09/2006, 13h15
  4. Structure de classe dynamique
    Par amel666 dans le forum Langage
    Réponses: 2
    Dernier message: 24/01/2006, 09h13
  5. [C#] Invoquer une class dynamiquement
    Par nicoo dans le forum C#
    Réponses: 4
    Dernier message: 09/11/2005, 09h11

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