Перебирать список в классе c #

У меня есть следующий класс:

    public class SkinList : INotifyPropertyChanged
{
    public class Coord
    {
        public int x { get; set; }
        public int y { get; set; }
    }

    public class Location
    {
        public string ID { get; set; }
        public string Name { get; set; }
        public Coord Coords { get; set; }
        public string CodeNumber { get; set; }
        public string Description { get; set; }
    }

    public class Skin
    {
        public string ID { get; set; }
        public string Name { get; set; }
        public List<Location> Locations { get; set; }
    }

    public class RootObject
    {
        public List<Skin> Skins { get; set; }
    }
    public event PropertyChangedEventHandler PropertyChanged;

    public void NotifyPropertyChanged(string propName)
    {
        if(this.PropertyChanged != null)
            this.PropertyChanged(this, new PropertyChangedEventArgs(propName));
    }
}

В другом месте я пытаюсь использовать оператор foreach для перебора всех Locations в классе Skin:

    bool OnPoint(Point DotExists, SkinListModel.Skin skin)
    {
        foreach (SkinListModel.Location x in skin)
        {

        }
        return true;
    }

Я последовал совету здесь: Как сделать класс как IEnumerable в C #?

    public class Skin : IEnumerable<Location>
    {
        public string ID { get; set; }
        public string Name { get; set; }
        public List<Location> Locations { get; set; }
        public IEnumerator<Location> GetEnumerator()
        {
            return Locations.GetEnumerator();
        }

        IEnumerator IEnumerable.GetEnumerator()
        {
            return GetEnumerator();
        }
    }

но я получаю ошибки, в том числе:

Ошибка CS0738 «SkinListModel.Skin» не реализует элемент интерфейса «IEnumerable.GetEnumerator ()». Функция SkinListModel.Skin.GetEnumerator () не может реализовать функцию IEnumerable.GetEnumerator (), поскольку у нее нет соответствующего возвращаемого типа IEnumerator.

и:

Ошибка CS0305 Использование универсального типа 'IEnumerable<T>' требует аргументов 1 типа

Кажется, я не могу найти решение этой проблемы, есть идеи?

Всего 1 ответ


Ваш код выглядит нормально, поэтому вы, вероятно, пропускаете директиву using System.Collections; : using System.Collections;

Ошибки, которые вы получаете, довольно загадочны, но кажется, что компилятор не может разрешить неуниверсальные имена IEnumerator и IEnumerable . Выдает следующее сообщение об ошибке:

Ошибка CS0305 Использование универсального типа 'IEnumerable' требует аргументов 1 типа

Не могу проверить это прямо сейчас, но я почти уверен, что это проблема.


Есть идеи?

10000