public override bool TryInvokeMember(InvokeMemberBinder binder, object[] args, out object result) { var callInfo = new ActionCallInfo { NamedArguments = binder.CallInfo .ArgumentNames .Reverse() .Zip(args.Reverse(), (x, y) => new Tuple <string, object>(x, y)) .ToList(), UnnamedArguments = args.Take(binder.CallInfo.ArgumentCount - binder.CallInfo.ArgumentNames.Count).ToList(), MethodName = binder.Name }; result = binder.ResultDiscarded() ? ExecuteListeners(callInfo) : new ServiceAgent(_resolvingService) { CallInfo = callInfo }; return(true); }