using System; public class A { public virtual T Test (T t) { throw new ApplicationException (); } } public class B : A { public override T Test (T t) { Console.WriteLine ("Base"); return default (T); } } public class C : B { public override T Test (T t) { base.Test ("a"); return default (T); } } public class AG { public virtual T Test (T t, U u) { throw new ApplicationException (); } } public class B : AG { public override T Test (T t, UB u) { Console.WriteLine ("Base"); return default (T); } } public class C : B { public override T Test (T t, UC u) { base.Test ("a", default (UC)); return default (T); } } class X { public static void Main () { new C ().Test (1); new C ().Test (5, 3); } }