Как мне реализовать IEnumerable <T>

Я знаю, как реализовать не универсальный IEnumerable, как это:

using System;
using System.Collections;

namespace ConsoleApplication33
{
    class Program
    {
        static void Main(string[] args)
        {
            MyObjects myObjects = new MyObjects();
            myObjects[0] = new MyObject() { Foo = "Hello", Bar = 1 };
            myObjects[1] = new MyObject() { Foo = "World", Bar = 2 };

            foreach (MyObject x in myObjects)
            {
                Console.WriteLine(x.Foo);
                Console.WriteLine(x.Bar);
            }

            Console.ReadLine();
        }
    }

    class MyObject
    {
        public string Foo { get; set; }
        public int Bar { get; set; }
    }

    class MyObjects : IEnumerable
    {
        ArrayList mylist = new ArrayList();

        public MyObject this[int index]
        {
            get { return (MyObject)mylist[index]; }
            set { mylist.Insert(index, value); }
        }

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

Однако я также заметил, что IEnumerable имеет универсальную версию,IEnumerable<T>, но я не могу понять, как это реализовать.

Если я добавлюusing System.Collections.Generic;&nbsp;чтобы я использовал директивы, а затем измените:

class MyObjects : IEnumerable

чтобы:

class MyObjects : IEnumerable<MyObject>

И затем щелкните правой кнопкой мыши наIEnumerable<MyObject>&nbsp;и выберитеImplement Interface => Implement InterfaceVisual Studio услужливо добавляет следующий блок кода:

IEnumerator<MyObject> IEnumerable<MyObject>.GetEnumerator()
{
    throw new NotImplementedException();
}

Возврат не универсального объекта IEnumerable изGetEnumerator();&nbsp;На этот раз метод не работает, так что мне здесь поставить? CLI теперь игнорирует неуниверсальную реализацию и направляется прямо к универсальной версии, когда он пытается перечислить через мой массив во время цикла foreach.