using System; namespace SRF.Helpers { using System.Reflection; public sealed class MethodReference { private readonly Func _method; public MethodReference(object target, MethodInfo method) { SRDebugUtil.AssertNotNull(target); _method = o => method.Invoke(target, o); } public MethodReference(Func method) { _method = method; } public object Invoke(object[] parameters) { return _method.Invoke(parameters); } public static implicit operator MethodReference(Action action) { return new MethodReference(args => { action(); return null; }); } } }