Отражение .NET и массив - PullRequest
1 голос
/ 30 января 2010

Я пытаюсь получить значение свойства, представляющего собой одномерный массив, с помощью отражения

Я пробовал что-то вроде этого: (попробуйте убрать зацепки для ясности)

string[] fieldOrder;
PropertyInfo fieldOrderColumn;

fieldOrderColumn = targetType.GetProperty("OrderArray");

if (fieldOrderColumn == null)
    throw new Exception(targetType.Name + " the OrderArray is null ");

fieldOrder = (string[])fieldOrderColumn.GetValue(targetType, null);  //what should I use insted of this?

Очевидно, что последняя строка неверна, и пытается получить объект не массив, я предположил Быстрый Google, и я был бы на моем пути, но я не могу найти его. Я не знаю длину массива во время выполнения.

Будем благодарны за любые подсказки, ссылки или помощь.

1 Ответ

3 голосов
/ 30 января 2010

Вам необходимо передать экземпляр типа в GetValue. Если это статическое свойство, передайте null. В настоящее время вы передаете тип . Я ожидаю увидеть (примерно):

Type targetType = obj.GetType();
...[snip]
fieldOrder = (string[])fieldOrderColumn.GetValue(obj, null);

Обратите внимание, что если вы не уверены в типе массива, вы можете просто использовать Array (вместо string[]) или для одномерных массивов IList может быть полезным (и будет обрабатывать массивы списки и т.д.):

IList list = (IList)fieldOrderColumn.GetValue(obj, null);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...