interface IFoo {} interface IBar {} class C1 where IFoo : IBar { } abstract class C2 { public abstract C1 Hoge (C1 c) where T : IBar; } class C3 : C2 { public override C1 Hoge (C1 c) { return null; } } class X { public static void Main () { } }