diff --git a/src/Microsoft.OpenApi/Models/OpenApiOperation.cs b/src/Microsoft.OpenApi/Models/OpenApiOperation.cs index 6e54cd894..6182eda2b 100644 --- a/src/Microsoft.OpenApi/Models/OpenApiOperation.cs +++ b/src/Microsoft.OpenApi/Models/OpenApiOperation.cs @@ -237,18 +237,18 @@ public void SerializeAsV2(IOpenApiWriter writer) List parameters; if (Parameters == null) { - parameters = new(); + parameters = []; } else { - parameters = new(Parameters); + parameters = [.. Parameters]; } if (RequestBody != null) { // consumes - var consumes = RequestBody.Content.Keys.Distinct().ToList(); - if (consumes.Any()) + var consumes = new HashSet(RequestBody.Content?.Keys.Distinct(StringComparer.OrdinalIgnoreCase) ?? [], StringComparer.OrdinalIgnoreCase); + if (consumes.Count > 0) { // This is form data. We need to split the request body into multiple parameters. if (consumes.Contains("application/x-www-form-urlencoded") || @@ -261,19 +261,13 @@ public void SerializeAsV2(IOpenApiWriter writer) parameters.Add(RequestBody.ConvertToBodyParameter()); } } - else if (RequestBody.Reference != null) + else if (RequestBody.Reference != null && RequestBody.Reference.HostDocument is {} hostDocument) { - var hostDocument = RequestBody.Reference.HostDocument; parameters.Add( new OpenApiParameterReference(RequestBody.Reference.Id, hostDocument)); - - if (hostDocument != null) - { - consumes = RequestBody.Content.Keys.Distinct().ToList(); - } } - if (consumes.Any()) + if (consumes.Count > 0) { writer.WritePropertyName(OpenApiConstants.Consumes); writer.WriteStartArray(); @@ -294,10 +288,10 @@ public void SerializeAsV2(IOpenApiWriter writer) Responses .Where(static r => r.Value.Reference is {HostDocument: not null}) .SelectMany(static r => r.Value.Content?.Keys)) - .Distinct() - .ToList(); + .Distinct(StringComparer.OrdinalIgnoreCase) + .ToArray(); - if (produces.Any()) + if (produces.Length > 0) { // produces writer.WritePropertyName(OpenApiConstants.Produces);