// Note how the order of type parameters is different // in the base class. class Foo<T> { public Foo () { } public void Hello (T t) { } } class Bar<T,U> : Foo<U> { public Bar () { } public void Test (T t, U u) { } } class X { static void Test (Bar<int,string> bar) { bar.Hello ("Test"); bar.Test (7, "Hello"); } public static void Main () { Bar<int,string> bar = new Bar<int,string> (); Test (bar); } }