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