/// <summary> /// Invokes the method. /// </summary> /// <param name="method">The method.</param> /// <param name="instance">The instance.</param> /// <param name="parameters">The parameters.</param> /// <returns></returns> public static MethodInvokeResult InvokeMethod(this MethodInfo method, object instance, List <MethodInvokeParameter> parameters) { MethodInvokeResult result = null; if (method != null) { result = new MethodInvokeResult(); var methodParameters = parameters?.OrderBy(x => x.Sequence)?.ToArray() ?? new object[] { }; try { result.ReturnObject = method.Invoke(instance, methodParameters); result.OutObjects = new Dictionary <string, object>(); foreach (var one in parameters.Where(x => x.IsOut)) { result.OutObjects.Add(one.Name, methodParameters[one.Sequence]); } } catch (Exception ex) { result.Exception = ex.Handle(new { method = method?.GetFullName(), parameters }); } } return(result); }
/// <summary> /// Invokes this instance. /// </summary> /// <returns></returns> public MethodInvokeResult Invoke() { MethodInvokeResult result = new MethodInvokeResult(); try { result.ReturnObject = _methodInfo.Invoke(null, null); } catch (Exception ex) { result.Exception = ex.Handle(); } return(result); }