A: 

Well you have a clue in th error message. your GetEnumerator method returns System::Collections::IEnumerator^ while there is another method to this class that returns System::Collections::Generic::IEnumerator^ , this method is probably inherited from IList class.

Try to replace the return value with System::Collections::Generic::IEnumerator^.

Sorry, but i already tried it.The problem is that the compiler complains about the second GetEnumerator definition, but without it the compiler complains about a missing function definition (because GetEnumerator is abstract).
Andreas Roth
+1  A: 

You need to use the Micro$oft specific explicit override syntax for to override both GetEnumerator() methods:

virtual System::Collections::IEnumerator^ GetEnumerator2() = System::Collections::IEnumerable::GetEnumerator
{ throw gcnew NotImplementedException(); }

virtual IEnumerator<CustomItem>^ GetEnumerator()
{ throw gcnew NotImplementedException(); }

Note that I renamed the non-generic GetEnumerator method to GetEnumerator2 then specifies that it overrides System::Collections::IEnumerable::GetEnumerator. You can find out more about explicit override in here

oykuo
Thanks, that's exactly what i was looking for.
Andreas Roth