using System; public class Test { public static Func MakeFunctionWithCounter(Func func) { int counter = 0; return t => { counter++; return func(t); }; } public static int Counts(Func call) { return (int)call.Target.GetType().GetField("counter").GetValue(call.Target); } static void Main(string[] args) { var f = new Func(d => d*d); f = MakeFunctionWithCounter(f); f(1); f(2); f(3); Console.WriteLine(Counts(f)); } }