using System; abstract class A { public abstract void Foo (U arg) where U : T; } class B : A { public override void Foo (U arg) { ValueType vt = arg; Next (arg); } void Next (UU a) where UU : struct { } public static void Main () { new B ().Foo (5); } }