Проблемы с использованием foreach с общим списком

До сих пор я не пытался использовать предложение foreach в общем списке. Ошибка компиляции, которую я получаю:

Оператор foreach не может работать с переменными типа «DMS.OrderNodeList», поскольку «DMS.OrderNodeList» не содержит общедоступного определения для «GetEnumerator».

Любые предложения, что делать дальше?

Спасибо,


person Sanju    schedule 16.02.2010    source источник
comment
Кажется, что OrderNodeList не реализует ни один из перечисляемых интерфейсов? IEnumerable, IList, IList‹T› и т. д. Следовательно, это не общий список — с точки зрения .NET это вообще не список. Что касается любых предложений, что делать дальше - да, читайте списки и дженерики в .NET. В частности, найдите время, чтобы узнать об IEnumerable и IEnumerable‹T› и о том, что они означают.   -  person bzlm    schedule 16.02.2010
comment
Google не может найти ничего в «DMS.OrderNodeList». Как это определяется?   -  person Konrad Rudolph    schedule 16.02.2010
comment
конрад. красивый. тонкий. +1   -  person Sky Sanders    schedule 16.02.2010


Ответы (2)


Вам необходимо реализовать интерфейс IEnumerable в вашем < strong>пользовательская коллекция (это не общий список).

person Klaus Byskov Pedersen    schedule 16.02.2010
comment
Если он предоставляет IEnumerable, вариант .ToList().ForEach() был бы вариантом... Я думаю, вы имеете в виду, что он должен явно реализовать IEnumerable‹›, нет? - person Sky Sanders; 16.02.2010
comment
@Sky Ирония в том, что интерфейс IEnumerable‹T› на самом деле не имеет ForEach() в качестве члена. Увы, в оригинальном посте слово «общий» используется неопределенно, поэтому мы не знаем, должен ли список быть общим (IEnumerable‹T›) или он общий в том смысле, что содержит разное. вещи. Если ему просто нужен ForEach(), то ему нужен IEnumerable, IEnumerable‹T› не требует реализации. - person bakasan; 16.02.2010
comment
Я слышу тебя. Думаю, нам придется дождаться бета-версии DMS.OrderNodeList, чтобы узнать об этом. - person Sky Sanders; 16.02.2010
comment
@Sky Я подписался на бета-версию DMS.OrderNodeList только по приглашению на их секретной странице в Facebook. Ура! Не могу дождаться. - person bzlm; 16.02.2010

Скажите своему классу OrderNodeList расширить Collection<OrderNode>, тогда вы получите этот перечислитель для себя (и, вероятно, большая часть логики, которую вы создали вручную для управления коллекцией, теперь будет реализована для вас).

Предполагается, что ваш OrderNodeList содержит набор объектов OrderNode.

person Andy Shellam    schedule 16.02.2010
comment
Коллекция списков, вы уверены? Не следует ли расширять коллекцию‹OrderNode› - person Mark Dickinson; 16.02.2010