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 :

Comment savoir si une propriété est une collection ou un tableau?


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Expert confirmé
    Avatar de Immobilis
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2004
    Messages
    6 559
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 559
    Par défaut Comment savoir si une propriété est une collection ou un tableau?
    Salut,

    J'utilise la recursivité pour parcourir un objet. J'aimerai repérer celles qui sont énumérables. Voici la méthode de base
    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
    38
    39
    40
    41
    42
    43
    44
    45
    public static string EntityToString(Object value)
    {
        if (value != null)
        {
            StringBuilder sb = new StringBuilder();
            Type theType = null;
            PropertyInfo propInfo = null;
     
            try
            {
                theType = value.GetType();
     
                sb.Append(theType.FullName + ":\r\n");
     
                for (int i = 0; i < theType.GetProperties().Length; i++)
                {
                    propInfo = theType.GetProperties()[i];
     
                    try
                    {
                        sb.Append(string.Format("{0} = {1}\r\n", propInfo.Name, propInfo.GetValue(value, null)));
                    }
                    catch
                    {
                    }
                }
     
                return sb.ToString();
            }
            catch
            {
            }
            finally
            {
                propInfo = null;
                theType = null;
                sb = null;
            }
        }
        else
        {
            return null;
        }
        return null;
    }
    Auriez-vous une idée?

    Merci d'avance

    Immo
    "Winter is coming" (ma nouvelle page d'accueil)

  2. #2
    Membre expérimenté
    Avatar de StormimOn
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2005
    Messages
    2 593
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2005
    Messages : 2 593
    Par défaut
    Pour ce qui est des tableaux, il y a une propriété IsArray au niveau du PropertyType

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    bool isArray = propInfo.PropertyType.IsArray;
    Pour les collections, tu peux regarder si le type implémente les interfaces ICollection et/ou IEnumerable. Par exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Type[] t = propInfo.PropertyType.FindInterfaces(
        delegate(Type typeObj, Object criteriaObj) { return typeObj.ToString() == criteriaObj.ToString(); },
        "System.Collections.ICollection");
    Si t n'est pas vide, alors le type implémente ICollection.

    Tu peux indiquer plusieurs interfaces à rechercher, il faut modifier la méthode anonyme à ce moment, car criteriaObj ne sera plus une chaîne mais un tableau.

Discussions similaires

  1. Réponses: 2
    Dernier message: 01/12/2011, 19h50
  2. Comment savoir si le fichier est une image
    Par MaitrePylos dans le forum Ruby on Rails
    Réponses: 15
    Dernier message: 10/05/2007, 15h31
  3. Réponses: 28
    Dernier message: 29/07/2006, 16h04
  4. Comment savoir si le bouton d'une fenêtre est enfoncé ?
    Par Lecerf dans le forum Composants VCL
    Réponses: 7
    Dernier message: 21/09/2005, 19h38
  5. Réponses: 19
    Dernier message: 26/01/2005, 10h41

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