2010-01-21 3 views
1

мне нужно, чтобы иметь возможность петлю вокруг неизвестного типа, напримерЕогеасп неизвестного типа

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

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

+1

У вас есть вопросы? –

+1

C# Я полагаю? Возможно, стоит сказать, какой язык вы разрабатываете в ... – Webleeuw

ответ

4

Вы должны по крайней мере, бросить viewData["foobar"] к IEnumerable иметь object с в вашей 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

Предполагая, что это C#, о котором мы говорим, конечно. –

+0

+1 простой простой – JonH

+0

viewData ["foobar"] уже может быть IEnumerable, если indexData с именем indexer возвращает тип (полученный из) IEnumerable. – Webleeuw

0

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

Смежные вопросы