예제 #1
0
        public object Send(object target, string methodName, object[] args)
        {
            var method = _binder.GetMethod(target.GetType(), methodName, args.GetTypes());

            if (method.HasAttribute <InvokeRequiredAttribute>())
            {
                return(_invoker.Do(() => _baseDispatcher.Send(target, methodName, args)));
            }
            return(_baseDispatcher.Send(target, methodName, args));
        }
예제 #2
0
        public object Send(object obj, string methodName, object[] args)
        {
            try
            {
                var method   = _binder.GetMethod(obj.GetType(), methodName, args.GetTypes());
                var callArgs = _binder.BindArguments(method, args);

                return(method.Invoke(obj, callArgs));
            }
            catch (TargetInvocationException e)
            {
                throw new Exception("Error in dispatch", e.InnerException);
            }
        }