コード例 #1
0
        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);
        }