internal static RunResult Run(this CommandAction commandAction, ICommandDependencyResolver resolver, CommandLineParseResult parseResult) { var instance = resolver.Resolve(commandAction.LinkedToMethod.DeclaringType); object[] parameterValues = GetCommandParameterValues(commandAction.Parameters, parseResult); var returnResult = new RunResult() { ReturnType = commandAction.LinkedToMethod.ReturnType }; if (commandAction.LinkedToMethod.ReturnType != typeof(void)) { var res = commandAction.LinkedToMethod.Invoke(instance, parameterValues); returnResult.Json = JsonConvert.SerializeObject( res, new JsonSerializerSettings { ContractResolver = new CamelCasePropertyNamesContractResolver() }); } else { commandAction.LinkedToMethod.Invoke(instance, parameterValues); } return(returnResult); }
internal static void Run(this CommandAction commandAction, ICommandDependencyResolver resolver, CommandLineParseResult parseResult) { var instance = resolver.Resolve(commandAction.LinkedToMethod.DeclaringType); object[] parameterValues = GetCommandParameterValues(commandAction.Parameters, parseResult); commandAction.LinkedToMethod.Invoke(instance, parameterValues); }
internal static void Run(this CommandAction commandAction, ICommandDependencyResolver resolver, CommandLineParseResult parseResult) { var instance = resolver.Resolve(commandAction.LinkedToMethod.DeclaringType); object[] parameterValues = GetCommandParameterValues(commandAction.Parameters, parseResult); commandAction.LinkedToMethod.Invoke(instance, parameterValues); }
public CommandRunner WithDependencyResolver(ICommandDependencyResolver resolver) { _resolver = resolver; return(this); }
internal static async Task <RunResult> RunAsync(this CommandAction commandAction, ICommandDependencyResolver resolver, CommandLineParseResult parseResult) { var instance = resolver.Resolve(commandAction.LinkedToMethod.DeclaringType); object[] parameterValues = GetCommandParameterValues(commandAction.Parameters, parseResult); var returnResult = new RunResult() { ReturnType = commandAction.LinkedToMethod.ReturnType }; if (commandAction.LinkedToMethod.ReturnType != typeof(void)) { object res = null; if (commandAction.LinkedToMethod.IsAsyncMethod()) { dynamic result = (Task)commandAction.LinkedToMethod.Invoke(instance, parameterValues); await result; try { res = result.Result; } catch (Exception e) { res = null; } } else { res = commandAction.LinkedToMethod.Invoke(instance, parameterValues); } returnResult.Value = res; /* * returnResult.Json = JsonConvert.SerializeObject( * * res, * new JsonSerializerSettings * { * ContractResolver = new CamelCasePropertyNamesContractResolver() * }); */ } else { commandAction.LinkedToMethod.Invoke(instance, parameterValues); } return(returnResult); }