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 :

introspection recuperer contenu enum


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Inscrit en
    Juillet 2007
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 6
    Par défaut introspection recuperer contenu enum
    Bonjour à tous,

    J'utilise actuellement l'introspection pour générer à l'exécution de mon programme des instances d'objets.

    Je fais cela à partir d'une chaîne de caractère qui correspond au type de l'objet et d'un tableau contenant les paramètres.

    Cela fonctionne bien pour les objets instanciables car je retrouve un constructeur, mais j'ai un problème lorsqu'il s'agit d'énumération.

    Lorsqu'il s'agit d'énumération j'ai à ma disposition deux information l'objet Type qui correspond à mon énumeration et un entier qui m'indique l'index du champs de l'énum que je veux récupérer :

    ex : public enum Color
    {
    Red,
    Green,
    Blue
    }

    avec 0 correspondant à Red, 1 à Green et 2 à Blue.


    J'ai effectuer des recherches dans la msdn , sans réussir à trouver si il existe une méthode permettant de faire cela...

    Si quelqu'un sait comment résoudre ce problème, merci de m'en faire part!

    Bien Cordialement.
    Audric

  2. #2
    Expert confirmé
    Avatar de Skyounet
    Homme Profil pro
    Software Engineer
    Inscrit en
    Mars 2005
    Messages
    6 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Software Engineer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 6 380
    Par défaut
    Citation Envoyé par pod67 Voir le message
    Bonjour à tous,

    J'utilise actuellement l'introspection pour générer à l'exécution de mon programme des instances d'objets.

    Je fais cela à partir d'une chaîne de caractère qui correspond au type de l'objet et d'un tableau contenant les paramètres.

    Cela fonctionne bien pour les objets instanciables car je retrouve un constructeur, mais j'ai un problème lorsqu'il s'agit d'énumération.

    Lorsqu'il s'agit d'énumération j'ai à ma disposition deux information l'objet Type qui correspond à mon énumeration et un entier qui m'indique l'index du champs de l'énum que je veux récupérer :

    ex : public enum Color
    {
    Red,
    Green,
    Blue
    }

    avec 0 correspondant à Red, 1 à Green et 2 à Blue.


    J'ai effectuer des recherches dans la msdn , sans réussir à trouver si il existe une méthode permettant de faire cela...

    Si quelqu'un sait comment résoudre ce problème, merci de m'en faire part!

    Bien Cordialement.
    Audric
    Pas tout compris, mais
    Color c = (Color)0;
    ça fonctionne.

  3. #3
    Nouveau membre du Club
    Inscrit en
    Juillet 2007
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 6
    Par défaut
    Bonjour, merci de répondre aussi vite!!

    Alors en effet je n'ai pas été très clair, le problème est que je ne connais pas le type de l'énumération avant l'exécution, et je ne peux donc pas mettre en place une solution de ce genre.

    je ne dispose que de l'objet Type (System.type) et de l'entier qui sert d'index

    Voici un boût de code pour essayer d'être plus clair sur mon problème :

    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
     
    foreach (Type type in (Assembly.LoadFrom(assembly)).GetTypes())
    {
    	if (type.Name.Equals(typeName))
    	{
    		//If the type is an enum there are no constructor
    		if (type.IsEnum)
    		{
    			//La solution que tu me propose
    			value = (ColorClass.colorEnum)enumIndex;
     
    			//Mais le problème est que ColorClass.colorEnum n'est pas fixe et peut changer à chaque execution
    			//Il me faudrait un truc du genre 
    			value = type.getEnumConstant(enumIndex);
     
    			//Ou alors une fonction qui fait l'inverse du typeOf
    			value = (classOf(type))enumIndex;
    		}
    		else
    		{
    			ConstructorInfo ctor = type.GetConstructor(parameters.ToArray());
    			value = ctor.Invoke(parameters.ToArray());
    		}
    	}
    }

  4. #4
    Expert confirmé
    Avatar de Skyounet
    Homme Profil pro
    Software Engineer
    Inscrit en
    Mars 2005
    Messages
    6 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Software Engineer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 6 380
    Par défaut
    Ok c'est plus clair, et c'est plus simple

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    value = Enum.ToObject(type, enumIndex);

  5. #5
    Nouveau membre du Club
    Inscrit en
    Juillet 2007
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 6
    Par défaut
    Hey,

    merci beaucoup c'est exactement ce qu'il me fallait!!

  6. #6
    Expert confirmé
    Avatar de Skyounet
    Homme Profil pro
    Software Engineer
    Inscrit en
    Mars 2005
    Messages
    6 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Software Engineer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 6 380
    Par défaut
    Citation Envoyé par pod67 Voir le message
    Hey,

    merci beaucoup c'est exactement ce qu'il me fallait!!
    Tu as un bouton en bas de chaque discussion pour mettre Résolu, pas besoin de le mettre à la main

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

Discussions similaires

  1. Recuperer contenu page distante
    Par karibouk dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 29/01/2008, 08h46
  2. recuperer contenu fichier txt y compris mise en forme
    Par bill7 dans le forum Documents
    Réponses: 5
    Dernier message: 19/03/2007, 10h14
  3. [2.0][VB.NET] Récupérer contenu internet
    Par khamett dans le forum Windows Forms
    Réponses: 20
    Dernier message: 04/12/2006, 22h40
  4. Recuperer contenu IEFrame avec Handle
    Par got75 dans le forum VBScript
    Réponses: 1
    Dernier message: 12/10/2006, 15h48
  5. Récupérer contenu de fichier dans une variable
    Par peppena dans le forum Linux
    Réponses: 4
    Dernier message: 15/06/2005, 12h50

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