if I understand your problem correctly, here is a sample how you can implement non-generic Enumerator in your class
public class Sample : IEnumerable<Giraffe>, IEnumerable<Pigeon> { IEnumerator<Giraffe> IEnumerable<Giraffe>.GetEnumerator() { return null; } IEnumerator<Pigeon> IEnumerable<Pigeon>.GetEnumerator() { return null; } IEnumerator IEnumerable.GetEnumerator() { return null; //your logic for the enumerator } }
since the generic IEnumerable<T> inherits non-generic IEnumerable so implementing IEnumerable.GetEnumerator would define an implementation for the same.
you may additionally declare the class as public class Sample : IEnumerable, IEnumerable<Giraffe>, IEnumerable<Pigeon> for more clarity
example
public class Sample : IEnumerable, IEnumerable<Giraffe>, IEnumerable<Pigeon> { IEnumerator<Giraffe> IEnumerable<Giraffe>.GetEnumerator() { return null; } IEnumerator<Pigeon> IEnumerable<Pigeon>.GetEnumerator() { return null; } IEnumerator IEnumerable.GetEnumerator() { return null; //your logic for the enumerator } }