From 5a006f563d7b50ff976d05fd9b5271fdb0082d94 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?K=C3=A9vin=20Chalet?= Date: Tue, 7 Jul 2020 20:30:35 +0200 Subject: [PATCH] Update GetNamedParameters()/GetUnnamedParameters() to use cached empty instances --- .../Primitives/OpenIddictParameter.cs | 21 +++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) diff --git a/src/OpenIddict.Abstractions/Primitives/OpenIddictParameter.cs b/src/OpenIddict.Abstractions/Primitives/OpenIddictParameter.cs index 30854a39..470b1b42 100644 --- a/src/OpenIddict.Abstractions/Primitives/OpenIddictParameter.cs +++ b/src/OpenIddict.Abstractions/Primitives/OpenIddictParameter.cs @@ -6,6 +6,7 @@ using System; using System.Collections.Generic; +using System.Collections.Immutable; using System.ComponentModel; using System.Globalization; using System.Linq; @@ -361,17 +362,19 @@ namespace OpenIddict.Abstractions /// A dictionary of all the parameters associated with the current instance. public IReadOnlyDictionary GetNamedParameters() { - var parameters = new Dictionary(); - if (Value is JsonElement element && element.ValueKind == JsonValueKind.Object) { + var parameters = new Dictionary(StringComparer.Ordinal); + foreach (var property in element.EnumerateObject()) { parameters[property.Name] = property.Value; } + + return parameters; } - return parameters; + return ImmutableDictionary.Create(); } /// @@ -381,25 +384,31 @@ namespace OpenIddict.Abstractions /// An enumeration of all the unnamed parameters associated with the current instance. public IReadOnlyList GetUnnamedParameters() { - var parameters = new List(); - if (Value is string[] array) { + var parameters = new List(); + for (var index = 0; index < array.Length; index++) { parameters.Add(array[index]); } + + return parameters; } else if (Value is JsonElement element && element.ValueKind == JsonValueKind.Array) { + var parameters = new List(); + foreach (var value in element.EnumerateArray()) { parameters.Add(value); } + + return parameters; } - return parameters; + return ImmutableList.Create(); } ///