Используя отражение, у меня есть объект, который мне нужно преобразовать в итерируемый список элементов (тип неизвестен, будет объектом).Используя окно 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 действительно существует и содержит элементы.Фактически сохраняемый экземпляр является строго типизированным списком <>, но при необходимости может принимать ограниченное подмножество форм.Но смысл этого упражнения в том, что этот метод Example () не знает базовый тип свойства.