Я думаю, вы ищете свойство Type.IsArray
(указывает, является ли тип массивом) и Type.GetElementType
метод (получает, помимо прочего, тип элемента массива).Обратите внимание, что тип элемента массива не обязательно совпадает с конкретным типом времени выполнения каждого из элементов массива;В игру может войти полиморфизм.
Конечно, чтобы просто получить значения, вы можете положиться на массив-ковариацию: приведите значение свойства (я предполагаю, что вы используете PropertyInfo.GetValue
где-то) в object[]
и foreach, как обычно.
РЕДАКТИРОВАТЬ :
Ваше обновление довольно запутанно.Если у вас уже есть объект , который, по вашему мнению, может быть массивом;с таким же успехом вы можете сделать:
object obj = ...
object[] array = obj as object[];
if(array != null)
{
foreach(object item in array)
{
...
}
}
Похоже, вы действительно путаете метаданные с реальными данными здесь.Вы не можете фактически перечислить любой массив, если все, что у вас есть, это System.Type
, который представляет массив - тип .
EDIT :
Я думаю, я наконец понял, что ты хочешь сделать.Просто используйте Type.GetElementType
, чтобы получить тип элемента массива, а затем получите свойства этого типа (рекурсивно?).Возможно, вы немного измените свой дизайн, чтобы получить желаемый XML-вывод.XML представляет иерархию;но тип возврата вашего метода - просто Dictionary<string, string>
, который является flat структурой данных.