using System; using System.Collections; using System.Collections.Generic; public class Qux<X,V> : IEnumerable<V> where V : IComparable<V> { public IEnumerator<V> GetEnumerator() { yield break; } IEnumerator IEnumerable.GetEnumerator() { yield break; } } public class Foo<X,V> : Qux<X,V> where V : IComparable<V> { } public class Test<T> : IComparable<Test<T>> { public int CompareTo (Test<T> t) { return 0; } } class X { public static void Main () { Foo<X,Test<X>> foo = new Foo<X,Test<X>> (); foreach (Test<X> test in foo) ; } }