using System; namespace TestGenericsSubtypeMatching { public class Sender : IDisposable { public void DoSend (Action action) { using (Sender sub = new Sender ()) { Send (t => { action(t); sub.ActionOnObject (t); }); } } private static void Send (Action action) { } void ActionOnObject (object o) { o.ToString (); } #region IDisposable implementation public void Dispose () { Console.WriteLine ("Dispose!"); } #endregion } public class C { public static void Main () { new Sender ().DoSend(l => Console.WriteLine (l)); } } }