using System; using System.Linq.Expressions; 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 } class C { public static int Main () { new Sender ().DoSend (l => Console.WriteLine (l)); return 0; } } }