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)); }
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); } }