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