Browse Source

Update GetNamedParameters()/GetUnnamedParameters() to use cached empty instances

pull/1019/head
Kévin Chalet 6 years ago
parent
commit
5a006f563d
  1. 21
      src/OpenIddict.Abstractions/Primitives/OpenIddictParameter.cs

21
src/OpenIddict.Abstractions/Primitives/OpenIddictParameter.cs

@ -6,6 +6,7 @@
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Collections.Immutable;
using System.ComponentModel; using System.ComponentModel;
using System.Globalization; using System.Globalization;
using System.Linq; using System.Linq;
@ -361,17 +362,19 @@ namespace OpenIddict.Abstractions
/// <returns>A dictionary of all the parameters associated with the current instance.</returns> /// <returns>A dictionary of all the parameters associated with the current instance.</returns>
public IReadOnlyDictionary<string, OpenIddictParameter> GetNamedParameters() public IReadOnlyDictionary<string, OpenIddictParameter> GetNamedParameters()
{ {
var parameters = new Dictionary<string, OpenIddictParameter>();
if (Value is JsonElement element && element.ValueKind == JsonValueKind.Object) if (Value is JsonElement element && element.ValueKind == JsonValueKind.Object)
{ {
var parameters = new Dictionary<string, OpenIddictParameter>(StringComparer.Ordinal);
foreach (var property in element.EnumerateObject()) foreach (var property in element.EnumerateObject())
{ {
parameters[property.Name] = property.Value; parameters[property.Name] = property.Value;
} }
return parameters;
} }
return parameters; return ImmutableDictionary.Create<string, OpenIddictParameter>();
} }
/// <summary> /// <summary>
@ -381,25 +384,31 @@ namespace OpenIddict.Abstractions
/// <returns>An enumeration of all the unnamed parameters associated with the current instance.</returns> /// <returns>An enumeration of all the unnamed parameters associated with the current instance.</returns>
public IReadOnlyList<OpenIddictParameter> GetUnnamedParameters() public IReadOnlyList<OpenIddictParameter> GetUnnamedParameters()
{ {
var parameters = new List<OpenIddictParameter>();
if (Value is string[] array) if (Value is string[] array)
{ {
var parameters = new List<OpenIddictParameter>();
for (var index = 0; index < array.Length; index++) for (var index = 0; index < array.Length; index++)
{ {
parameters.Add(array[index]); parameters.Add(array[index]);
} }
return parameters;
} }
else if (Value is JsonElement element && element.ValueKind == JsonValueKind.Array) else if (Value is JsonElement element && element.ValueKind == JsonValueKind.Array)
{ {
var parameters = new List<OpenIddictParameter>();
foreach (var value in element.EnumerateArray()) foreach (var value in element.EnumerateArray())
{ {
parameters.Add(value); parameters.Add(value);
} }
return parameters;
} }
return parameters; return ImmutableList.Create<OpenIddictParameter>();
} }
/// <summary> /// <summary>

Loading…
Cancel
Save