interface I { } class Foo where T2 : I> { public Foo (T2 t2) { } } class Bar : I> { public static int Main () { var foo = new Foo (new Bar ()); return 0; } }