diff --git a/src/Cake.Core/CakeArguments.cs b/src/Cake.Core/CakeArguments.cs index 1895ec23f4..807b3d4eba 100644 --- a/src/Cake.Core/CakeArguments.cs +++ b/src/Cake.Core/CakeArguments.cs @@ -1,4 +1,5 @@ -using System.Collections.Generic; +using System; +using System.Collections.Generic; using System.Linq; namespace Cake.Core @@ -8,7 +9,7 @@ namespace Cake.Core /// public sealed class CakeArguments : ICakeArguments { - private readonly ILookup _arguments; + private readonly Dictionary> _arguments; /// /// Initializes a new instance of the class. @@ -16,7 +17,15 @@ public sealed class CakeArguments : ICakeArguments /// The arguments. public CakeArguments(ILookup arguments) { - _arguments = arguments; + _arguments = new Dictionary>(StringComparer.OrdinalIgnoreCase); + foreach (var group in arguments) + { + _arguments[group.Key] = new List(); + foreach (var argument in group) + { + _arguments[group.Key].Add(argument); + } + } } /// @@ -28,7 +37,7 @@ public CakeArguments(ILookup arguments) /// public bool HasArgument(string name) { - return _arguments.Contains(name); + return _arguments.ContainsKey(name); } /// @@ -38,9 +47,8 @@ public bool HasArgument(string name) /// The argument values. public ICollection GetArguments(string name) { - return _arguments.Contains(name) - ? _arguments[name].ToArray() - : null; + _arguments.TryGetValue(name, out var arguments); + return arguments ?? (ICollection)Array.Empty(); } } } diff --git a/src/Cake/Cake.csproj b/src/Cake/Cake.csproj index 220b9734ac..3621cc9c1b 100644 --- a/src/Cake/Cake.csproj +++ b/src/Cake/Cake.csproj @@ -30,6 +30,6 @@ - + \ No newline at end of file