using System; public class GenericType where U : IEquatable where V : IEquatable { public U u; } public class Base where V : IEquatable { public virtual T Test (GenericType gt) where T : IEquatable { return gt.u; } } public class Override : Base where W : IEquatable { public override T Test (GenericType gt) { return base.Test (gt); } } class M { public static int Main () { Base b = new Override (); b.Test (new GenericType ()); return 0; } }