public static T GetArgument <T>(IEnumerable <string> arguments, string name, T defaultValue) { if (arguments == null) { return(defaultValue); } foreach (string arg in arguments) { if (arg.StartsWith("-") || arg.StartsWith("/")) { int pos = arg.IndexOfAny(new[] { '=', ':' }, 1); string argName = pos < 0 ? arg.Substring(1) : arg.Substring(1, pos - 1); if (string.Compare(name, argName, StringComparison.OrdinalIgnoreCase) == 0) { string value = pos < 0 ? string.Empty : arg.Substring(pos + 1).Trim(); if (value.Length == 0) { if (typeof(T) == typeof(bool)) // special case for bool args: if it's there, return true { return((T)(object)true); } return(defaultValue); } return(Extensions.ChangeType(value, defaultValue)); } } } return(defaultValue); }
public static object GetArgument(string name, object defaultValue, Type conversionType, IFormatProvider provider) { if (name == null) { throw new ArgumentNullException("name"); } if (conversionType == null) { throw new ArgumentNullException("conversionType"); } string s; if (!_namedArguments.TryGetValue(name, out s)) { return(defaultValue); } if (conversionType == typeof(bool) && string.IsNullOrEmpty(s)) { return(true); } return(Extensions.ChangeType(s, conversionType, defaultValue, provider)); }
public static object GetArgument(int index, object defaultValue, Type conversionType, IFormatProvider provider) { if (!_positionArguments.TryGetValue(index, out string s)) { return(defaultValue); } return(Extensions.ChangeType(s, conversionType, defaultValue, provider)); }
public static T GetArgument <T>(int index, T defaultValue, IFormatProvider provider) { if (!_positionArguments.TryGetValue(index, out string s)) { return(defaultValue); } return(Extensions.ChangeType(s, defaultValue, provider)); }
public static T GetArgument <T>(string name, T defaultValue, IFormatProvider provider) { if (name == null) { throw new ArgumentNullException(nameof(name)); } if (!_namedArguments.TryGetValue(name, out string s)) { return(defaultValue); } if (typeof(T) == typeof(bool) && string.IsNullOrEmpty(s)) { return((T)(object)true); } return(Extensions.ChangeType(s, defaultValue, provider)); }