Объект C # в массив

Используя отражение, у меня есть объект, который мне нужно преобразовать в повторяющийся список элементов (тип неизвестен, будет объект) . Используя окно Watch, я вижу, что мой объект представляет собой массив определенного типа, поскольку он сообщает мне количество элементов, и я могу развернуть древовидное представление, чтобы увидеть сами элементы.

Во-первых, мне нужно проверить, что переданный объект является какой-то массив (может быть List, может быть object [] и т. д.). Затем мне нужно перебрать этот массив. Однако я не могу выполнить преобразование типов.

Вот как я его использую (сокращенно):

    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
        }
    }

Я пробовал различные разные преобразования типов. Вышеупомянутое не вызывает исключения, но mylist имеет значение null, когда anArray действительно существует и содержит элементы. Фактически сохраняемый экземпляр представляет собой строго типизированный List <>, но при необходимости может принимать ограниченный набор форм. Но суть упражнения в том, что этот метод Example () не знает базового типа свойства.

23
задан GeoffM 22 June 2011 в 09:56
поделиться