Fix System.ArgumentException

System.ArgumentException occurs when handling space-separated arguments provided as a single string. GetParameterList<T>() function attempts to parse the string of numbers as a UInt32.
pull/581/head
Alstruit 10 months ago
parent 5fe8a827d8
commit 9e1179c980
No known key found for this signature in database
GPG Key ID: 4F57E6793C946CEC

@ -367,21 +367,60 @@ namespace DepotDownloader
var list = new List<T>();
var index = IndexOfParam(args, param);
if (index == -1 || index == (args.Length - 1))
// Ensure the parameter was found and there is at least one value after it
if (index == -1 || index >= args.Length - 1)
return list;
index++;
var converter = TypeDescriptor.GetConverter(typeof(T));
if (converter == null)
{
Console.WriteLine($"Warning: No type converter available for type {typeof(T)}");
return list;
}
var strParam = args[index];
// Handle the scenario where we have a single space-separated string of values
if (strParam.Contains(" ") && !strParam.StartsWith("-"))
{
// Directly split and convert all elements into a list of T
try
{
list = strParam.Split(' ', StringSplitOptions.RemoveEmptyEntries)
.Select(val => (T)converter.ConvertFromString(val))
.Where(convertedVal => convertedVal != null)
.ToList();
}
catch (Exception ex)
{
Console.WriteLine($"Warning: Unable to convert values from '{strParam}' to type {typeof(T)}. Exception: {ex.Message}");
}
return list;
}
// Handle each value provided as an individual argument
while (index < args.Length)
{
var strParam = args[index];
strParam = args[index];
if (strParam[0] == '-') break;
// Stop parsing if a new parameter starts
if (strParam.StartsWith("-"))
break;
var converter = TypeDescriptor.GetConverter(typeof(T));
if (converter != null)
try
{
var convertedValue = converter.ConvertFromString(strParam);
if (convertedValue != null)
{
list.Add((T)convertedValue);
}
}
catch (Exception ex)
{
list.Add((T)converter.ConvertFromString(strParam));
Console.WriteLine($"Warning: Unable to convert value '{strParam}' to type {typeof(T)}. Exception: {ex.Message}");
}
index++;

Loading…
Cancel
Save