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();
}
///