public class Foo { } public class Top where S : Foo { public class Base where T : S { public class Derived where U : T { public void Test () { } } } } public class Test { public static int Main () { Top.Base.Derived d = new Top.Base.Derived (); d.Test (); return 0; } }