private void VerifyArguments() { Debug.WriteLine(SyncMethod.DelegateArgumentTypes.ToString2()); Debug.WriteLine(AllArguments.ToString2()); if (!SyncMethod.DelegateArgumentTypes.SequenceEqual(AllArguments.Select(o => o.GetType()))) { //TODO: improve the exception message throw new Exception("Arguments don't match the signature of the method"); } }
public CommandArgs(IEnumerable <string> args) { args.ShouldNotBeNullOrEmpty("args"); Command = args.First(); AllArguments = args.Skip(1).ToList(); Arguments = AllArguments.Where(IsNotFlag).ToList(); Flags = AllArguments.Where(IsSingleFlag).ToList(); DoubleFlags = AllArguments.Where(IsDoubleFlag).ToList(); Help = DoubleFlags.Any(f => f.EqualsIgnoreCase(HelpFlag)); }
/// <summary> /// Get argument as string. If no argument given for parameter name, defaultValue will be returned. /// </summary> /// <param name="parameterName"></param> /// <param name="defaultValue"></param> /// <returns></returns> public static string GetArgument(string parameterName, string defaultValue = null) { string ret = null; if (!AllArguments.TryGetValue(parameterName, out ret)) { Dictionary <string, string> tempStacked = null; if (StackedArguments.TryGetValue(parameterName, out tempStacked) && tempStacked.Count == 1) { foreach (var entry in tempStacked) { return(entry.Value); } } return(defaultValue); } return(ret); }