C# de l'objet de tableau

L'aide de la réflexion que j'ai un objet dont j'ai besoin pour lancer dans un objet iterable liste d'éléments (de type inconnu, feront l'objet). L'utilisation de la Montre de fenêtre, je peux voir mon objet est un tableau de quelque type qu'il m'indique le nombre d'éléments et je peux exploser l'arborescence pour voir les éléments eux-mêmes.

Tout d'abord, j'ai besoin de vérifier que l'objet passé est une sorte de tableau (peut-être la Liste, peut-être l'objet[], etc). Alors j'ai besoin de parcourir ce tableau. Cependant, je ne peux pas faire la conversion de type.

Voici comment je l'utilise (en abrégé):

    private static void Example(object instance, PropertyInfo propInfo)
    {
        object anArray = propInfo.GetValue(instance, null);
        ArrayList myList = anArray as ArrayList;
        foreach (object element in myList)
        {
            //etc
        }
    }

J'ai essayé différentes distributions. Le ci-dessus ne soulève pas une exception, mais ma liste est nulle lorsque l'anArray existe réellement et contient des éléments. L'instance elle-même être sauvé est fortement typé Liste<> mais pourrait prendre un sous-ensemble limité de formes si nécessaire. Mais le but de l'exercice est que cet Exemple() la méthode ne connaît pas le type de base de la propriété.

  • vous pouvez trouver le type d'objet de l'instance.GetType() et vous pouvez le comparer avec desirebale type à l'aide de is, par exemple if (instance.GetType() is IEnumerable)
  • Nom d'affichage est maintenant de savoir comment est le mot clé qui fonctionne, ce que vous faites, il est tentant de jeter de Système.Type de Système.Collection.IEnumerable, qui ne fonctionne pas depuis que le Système.Type de ne pas implémenter cette interface. peut-être que tu voulais dire typeof(IEnumerable).IsAssignableFrom(instance.GetType())
InformationsquelleAutor GeoffM | 2011-06-22