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 :

reflexion et type d'objet


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif
    Inscrit en
    Janvier 2004
    Messages
    208
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 208
    Par défaut reflexion et type d'objet
    bonjour,

    a partir de l'instance d'une class je cherche a récupérer le type de chaque propriétés.

    dans le test que j'effectue pour le moment je récupère son type, son nom et sa valeur. Mais je n'arrive pas a réutilisé le type extrait pour effectué un cast sur un autre objet

    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
     
    cCategorie categorie = new cCategorie();
    categorie.NumCategorie = 10;
    categorie.Designation = "La designation";
     
    dbCategorie db = new dbCategorie((cCategorie)categorie);
    var categories = db.List();
     
    String className = categorie.GetType().ToString();
     
    PropertyInfo[] property  = Type.GetType(className, true).GetProperties();
     
    foreach (PropertyInfo info in property)
    {
            Console.WriteLine("nom : {0} type : {1} value : {2}", info.Name, info.PropertyType.ToString(), info.GetValue(categorie, null).ToString());
     
            //int unValeurBidon = (le type extrait)objetACaster; 
    }
    merci

  2. #2
    Membre émérite Avatar de NicoL__
    Homme Profil pro
    Architecte
    Inscrit en
    Janvier 2011
    Messages
    399
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte

    Informations forums :
    Inscription : Janvier 2011
    Messages : 399
    Par défaut
    Je ne crois pas que le compilateur accepte de le cast explicite en utilisant une varaible Type. Je pense qu'il te faudra utiliser un CASE sur le Type de la propriété et gérer les différents types possibles explicitement.

  3. #3
    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
    Ca n'est tout simplement pas possible! Le type sera connu uniquement au run-time tandis que ton code sera compilé au compile-time... Or c'est ce compilateur qui a besoin dudit type.

  4. #4
    Membre chevronné
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    312
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 312
    Par défaut
    Non tu peux pas,

    Néanmoins tu peux probablement t'en sortir d'une autre manière sans typer explicitement avec un type inconnu en compilation (ce qui est paradoxal).

    Peux tu préciser le besoin ?

  5. #5
    Membre émérite Avatar de kheironn
    Homme Profil pro
    Chef de projets technique C# / MVC / .Net
    Inscrit en
    Février 2007
    Messages
    823
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Chef de projets technique C# / MVC / .Net
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2007
    Messages : 823
    Par défaut
    Citation Envoyé par nah666 Voir le message
    Non tu peux pas,

    Néanmoins tu peux probablement t'en sortir d'une autre manière sans typer explicitement avec un type inconnu en compilation (ce qui est paradoxal).

    Peux tu préciser le besoin ?
    tu veux dire le type dynamic ?

  6. #6
    Membre très actif
    Inscrit en
    Janvier 2004
    Messages
    208
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 208
    Par défaut
    merci a tous pour vos réponses

    puisqu'il faut connaitre le type a la compilation, je peux dans ce cas passé par une instance dynamique qui ne sera pas connu lors de la compilation.

    mais idem après avec mes tests je me retrouve dans le même cas.
    je suis incapable de récupérer le type.

    a moins de faire une comparaison de type avec le type extrait de la propriété de mon instance dynamique et l'objet en question avec son type

    pour mon code je bloque toujours au même endroit
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    Type typeClass = Type.GetType("testObject.cCategorie");
    Object instanceClass = Activator.CreateInstance(typeClass, false);
    PropertyInfo[] proprieteClass = typeClass.GetProperties();
     
    int testint = 0;
    foreach (PropertyInfo info in proprieteClass)
    {
         Type type = info.PropertyType;
         if(type.Name == testint.GetType().Name)
                  Console.WriteLine("de type int");
     
    Console.WriteLine("Name : {0} type : {1}", info.Name, type.Name);
    }
    il y a certainement un moyen de faire plus propre que de test ou comparer type.Name

    le but de cette manipulation sans rentrée dans les détails, serai de posséder une méthode générique qui rempli les propriétés d'un objet de mon model selon le retour de la dao.

    merci

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 01/04/2019, 18h52
  2. Récupérer le type d'objet ayant le focus
    Par pilz dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 02/02/2006, 14h31
  3. [hibernate] Effacer un type d'objet
    Par nighma dans le forum Hibernate
    Réponses: 10
    Dernier message: 29/12/2005, 10h23
  4. Initialisation d'un type d'objet
    Par fdraven dans le forum Oracle
    Réponses: 3
    Dernier message: 28/10/2005, 11h05
  5. [Appli] Recherche d'un type d'objet précis pour interface
    Par superpatate dans le forum Interfaces Graphiques en Java
    Réponses: 3
    Dernier message: 05/08/2005, 12h02

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