using System; public abstract class BaseClass { } public class DerivedClass : BaseClass { } public abstract class CA { [Obsolete] public virtual void Foo (U args) where T : BaseClass, new() { } } public class CB : CA { public CB () { int x = 4; Action pp = r => base.Foo (x); } public static void Main () { new CB (); } }