private object ParseParameter(TaskParameters taskParameters, ITaskParameter p) { try { return(taskParameters.Parameter(p)); } catch (RequiredParameterNotGivenException e) { throw new TaskRequiredParameterException(p, this); } catch (TypeParserNotFoundException e) { throw new TaskParameterException(p, this); } }
public void Invoke(TaskParameters taskParameters) { try { var taskObject = Resolver.Resolve(Method.DeclaringType); var methodArguments = MethodArgumentsFromCommandLineParameters(taskParameters); Method.Invoke(taskObject, methodArguments); } catch (TargetInvocationException e) { throw new TaskException(this, e.InnerException); } }
public void RunTask(string taskName, TaskParameters taskParameters, IEnumerable <ITask> tasks) { var matchingTasks = tasks.Where(t => AllTaskNames(t).Contains(taskName.ToLower())).ToArray(); if (matchingTasks.Count() > 1) { throw new AmbiguousTaskNameException(taskName, matchingTasks); } else if (!matchingTasks.Any()) { throw new NoMatchingTaskException(taskName, tasks); } else { matchingTasks.Single().Invoke(taskParameters); } }
private object[] MethodArgumentsFromCommandLineParameters(TaskParameters taskParameters) { return(Parameters.Select(p => (object)ParseParameter(taskParameters, p)).ToArray()); }