using System; public delegate void Foo (); public class Test { public void World (S s, T t) where S : X where T : S { } public void Hello (U u, V v) where U : X where V : U { Foo foo = delegate { World (u, v); }; foo (); } } public class X { public static void Main () { X x = new X (); Test test = new Test (); test.Hello (x, x); } }