foreach по неизвестному типу - PullRequest
1 голос
/ 21 января 2010

Мне нужно иметь возможность зацикливаться на неизвестном типе, например

  foreach (var test in viewData["foobar"])
  {
  }

Любые предложения

Ответы [ 2 ]

4 голосов
/ 21 января 2010

Вы должны по крайней мере привести viewData["foobar"] к IEnumerable, чтобы иметь object s в переменной test.

Приведение может завершиться неудачей, поэтому сначала вам нужно проверить, действительно ли viewData["foobar"] реализует IEnumerable с оператором is или as:

if(viewData["foobar"] is IEnumerable)
    foreach(var test in (IEnumerable)viewData["foobar"])

Обратите внимание, что используется System.Collections.IEnumerable, а не System.Collections.Generic.IEnumerable<>.

0 голосов
/ 21 января 2010

Если viewData["foobar"] относится к типу объекта, то вы не можете перебрать его. Единственный способ итерации с циклом foreach - для производных типов IEnumerator.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...