Skip to content

Avoid multiple enumeration of array typed path parameters #5149

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 1 commit into from
May 15, 2025

Conversation

Khyalis
Copy link
Contributor

@Khyalis Khyalis commented Apr 20, 2025

In order to support using array types other than Array for path parameters, Client.Class.PathParameter.liquid uses
System.Linq.Enumerable extension methods, indicating that support is limited to types derived from IEnumerable / IEnumerable<T>.
(Although there may not be explicit guarantees for configured types to implement IEnumerable))

Under these circumstances, the current implementation's for-loop and its use of an index variable may cause some overhead:

  • The index variable appears to be mainly used to differentiate between the first and subsequent loop iterations. Otherwise, the intention appears to be to access all collection elements in order.
  • The loop condition (including the call into System.Linq.Enumerable.Count()) may be evaluated for every loop iteration, possibly causing multiple enumerations.
  • Accessing the "Current" element using System.Linq.ElementAt() may also need to iterate over all previous Elements.

(It might also lead to issues if the System.Linq namespace is not included in usings.)

One idea might be using a foreach-loop, which would also work with IEnumerable (1).

  • This would also serve to access all collection elements in order
  • It would only need to iterate over the collection once.

E.g.

{
    bool isAfterFirst = false;
    foreach (var item in {{ parameter.VariableName }})
    {
        if (isAfterFirst) urlBuilder_.Append(',');
        urlBuilder_.Append(ConvertToString(item, System.Globalization.CultureInfo.InvariantCulture));
        isAfterFirst = true;
   }
}

As, depending on whether the parameter is optional, the template may be used outside an isolated block,
this declares an nested block in order to avoid name conflicts.
Always ensuring a block in Client.Class.liquid might also work.

As the code generation assumes the configured array type to be generic. Therefore it would also be possible to use a using block with IEnumerator<T>, as, other than IEnumerable, IEnumerable<T> inherits IDisposable (2).
That way, the implementation could avoid a variable for appending the separator.

using (var enumerator = {{ parameter.VariableName }}.GetEnumerator())
{
    if (enumerator.MoveNext())
    {
        urlBuilder_.Append(ConvertToString(enumerator.Current, System.Globalization.CultureInfo.InvariantCulture));

        while (enumerator.MoveNext())
        {
            urlBuilder_.Append(',');
            urlBuilder_.Append(ConvertToString(enumerator.Current, System.Globalization.CultureInfo.InvariantCulture));
        }
    }
}

Picking up the approach of always adding the separator and removing it once in the end for non-empty collections used in other locations might also work (3):

using (var enumerator = {{ parameter.VariableName }}.GetEnumerator())
{
    if (enumerator.MoveNext())
    {
        do
        {
            urlBuilder_.Append(ConvertToString(enumerator.Current, System.Globalization.CultureInfo.InvariantCulture));
            urlBuilder_.Append(',');
        }
        while (enumerator.MoveNext());
        urlBuilder_.Length--;
    }
}

As I'm unsure, which approach might best match the project style, I have included commits for all three variants.

Do not call System.Linq.Enumerable.Count() and ElementAt() for array typed path parameters
in Client.Class.PathParameter.liquid template; use foreach() loop instead.
Also, avoid potentially undefined index access in IsDateTimeArray and IsDateArray cases.
@Khyalis Khyalis changed the title Patches/pathparameters enumerable Avoid multiple enumeration of array typed path parameters Apr 20, 2025
@lahma
Copy link
Collaborator

lahma commented May 13, 2025

I might be wrong here, but wouldn't the foreach approach be the most idiomatic, easy to read and also would allow some compiler optimization opportunities?

@Khyalis
Copy link
Contributor Author

Khyalis commented May 13, 2025

I agree.
The possible lack of compiler optimizations and decreased readability would be the downside of working with the IEnumerator directly instead of using foreach.
And the number of iterations can be expected to be reasonably low, so potential benefits of avoiding the checks likely wouldn't manifest.

I will remove the commits that would change the loop from foreach to do while.

@Khyalis Khyalis force-pushed the patches/pathparameters_enumerable branch from 8efcbca to eeceb8e Compare May 14, 2025 06:33
Copy link
Collaborator

@lahma lahma left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looking good, thank you!

@lahma lahma merged commit ef7e671 into RicoSuter:master May 15, 2025
2 of 3 checks passed
github-actions bot pushed a commit to EelcoLos/nx-tinkering that referenced this pull request Aug 5, 2025
Updated [NSwag.Core](https://github.com/RicoSuter/NSwag) from 14.4.0 to
14.5.0.

<details>
<summary>Release notes</summary>

_Sourced from [NSwag.Core's
releases](https://github.com/RicoSuter/NSwag/releases)._

## 14.5.0

## What's Changed

* Better support for reading yaml from a stream by @​simonthum in
RicoSuter/NSwag#5170
* #​4821 Cleanup packages to use those provided by framework by
@​thompson-tomo in RicoSuter/NSwag#4831
* Set GH actions target .NET SDK to 9.0.204 by @​lahma in
RicoSuter/NSwag#5172
* Better support for reading yaml from a stream (part two) by
@​simonthum in RicoSuter/NSwag#5171
* Avoid multiple enumeration of array typed path parameters by @​Khyalis
in RicoSuter/NSwag#5149
* Restores all disabled compiler warnings. 649 and 8765 were missing. by
@​carlbjorknas in RicoSuter/NSwag#4962
* Fix to explode array parameters implicitly when SchemaType is OpenAPI
3.0 by @​Phoosha in RicoSuter/NSwag#5176
* Adding cancellationToken to all calls to ReadAsStringAsync() and
ReadAsStreamAsync() by @​arshrp in
RicoSuter/NSwag#5187
* Remove requirement for specific NET SDK in GH Actions by @​lahma in
RicoSuter/NSwag#5188
* Adjusted cancellationToken to work for all NSwag supported frameworks
by @​arshrp in RicoSuter/NSwag#5190
* Allow setting of the client interface access modifier based on the
model access modifier by @​pbolduc in
RicoSuter/NSwag#4820
* Prioritize wildcard over json over first entry for accept content-type
by @​mdi1984 in RicoSuter/NSwag#5198
* Reduce interface dispatch to improve performance by @​lahma in
RicoSuter/NSwag#5199
* Surface ExtensionData in CSharpControllerTemplateModel by @​hirudan in
RicoSuter/NSwag#5204
* Expose the UseRequiredKeyword on CSharpClientGeneratorSettings for
CSharp client generator by @​r-englund in
RicoSuter/NSwag#5205
* Fix to expose an optional param for AbortSignal (for axios) /
CancelToken (for fetch) when GenerateClientInterfaces = true by @​tomvdk
in RicoSuter/NSwag#5202
* Sort client operation responses by status code by @​lahma in
RicoSuter/NSwag#5206
* TSC UpdateUseDtoClassAndDataConversionCodeProperties cleanup by
@​lahma in RicoSuter/NSwag#5212
* Update Microsoft.AspNetCore.* references to target 2.3.0 by @​lahma in
RicoSuter/NSwag#5214
* Convert to using Central Package Management by @​lahma in
RicoSuter/NSwag#5217
* Convert NSwagStudio setup to use WiX 6 by @​lahma in
RicoSuter/NSwag#5218
* Add support for TypeScript compilation testing by @​lahma in
RicoSuter/NSwag#5219
* Replace TypeScript string contain asserts with Verify tests by @​lahma
in RicoSuter/NSwag#5220
* Replace C# string contain asserts with Verify tests by @​lahma in
RicoSuter/NSwag#5221
* Remove deprecated tslint suppression by @​CaringDev in
RicoSuter/NSwag#5020
* Fix empty enumerable parameter handling in C# client by @​lahma in
RicoSuter/NSwag#5222
* Fix: C# Code Generation generates method with return default(void) by
@​nzeemin in RicoSuter/NSwag#4826
* Optimize DefaultParameterNameGenerator and add some more char cleanup
by @​lahma in RicoSuter/NSwag#5223
* Convert more tests to use verify by @​lahma in
RicoSuter/NSwag#5224
* Convert to xUnit v3 by @​lahma in
RicoSuter/NSwag#5225
* Ensure operation names start with alphanumeric character by @​lahma in
RicoSuter/NSwag#5227
* Change GenerateSampleSpecificationTests to auto verify mode by @​lahma
in RicoSuter/NSwag#5228
* Show DisplayName for conflicting actions by @​Saibamen in
RicoSuter/NSwag#5057
* Fix: When generated TS class name is "Error", it is conflicting with
TS Error class by @​doruk-info in
RicoSuter/NSwag#5032
* Update NJsonSchema to 11.4.0, update testsuite to reflect a change in
class name generation by @​WolfgangHG in
RicoSuter/NSwag#5177
* Improve nswag.js parameter handling by @​KaterSchnurz in
RicoSuter/NSwag#5232
* Use TypeScript 4.3 as default testing version by @​lahma in
RicoSuter/NSwag#5234
* v14.5.0 by @​RicoSuter in RicoSuter/NSwag#5236

## New Contributors

* @​simonthum made their first contribution in
RicoSuter/NSwag#5170
* @​thompson-tomo made their first contribution in
RicoSuter/NSwag#4831
* @​Khyalis made their first contribution in
RicoSuter/NSwag#5149
* @​carlbjorknas made their first contribution in
RicoSuter/NSwag#4962
* @​Phoosha made their first contribution in
RicoSuter/NSwag#5176
* @​arshrp made their first contribution in
RicoSuter/NSwag#5187
* @​pbolduc made their first contribution in
RicoSuter/NSwag#4820
 ... (truncated)

Commits viewable in [compare
view](RicoSuter/NSwag@v14.4.0...v14.5.0).
</details>

Updated [NSwag.Core.Yaml](https://github.com/RicoSuter/NSwag) from
14.4.0 to 14.5.0.

<details>
<summary>Release notes</summary>

_Sourced from [NSwag.Core.Yaml's
releases](https://github.com/RicoSuter/NSwag/releases)._

## 14.5.0

## What's Changed

* Better support for reading yaml from a stream by @​simonthum in
RicoSuter/NSwag#5170
* #​4821 Cleanup packages to use those provided by framework by
@​thompson-tomo in RicoSuter/NSwag#4831
* Set GH actions target .NET SDK to 9.0.204 by @​lahma in
RicoSuter/NSwag#5172
* Better support for reading yaml from a stream (part two) by
@​simonthum in RicoSuter/NSwag#5171
* Avoid multiple enumeration of array typed path parameters by @​Khyalis
in RicoSuter/NSwag#5149
* Restores all disabled compiler warnings. 649 and 8765 were missing. by
@​carlbjorknas in RicoSuter/NSwag#4962
* Fix to explode array parameters implicitly when SchemaType is OpenAPI
3.0 by @​Phoosha in RicoSuter/NSwag#5176
* Adding cancellationToken to all calls to ReadAsStringAsync() and
ReadAsStreamAsync() by @​arshrp in
RicoSuter/NSwag#5187
* Remove requirement for specific NET SDK in GH Actions by @​lahma in
RicoSuter/NSwag#5188
* Adjusted cancellationToken to work for all NSwag supported frameworks
by @​arshrp in RicoSuter/NSwag#5190
* Allow setting of the client interface access modifier based on the
model access modifier by @​pbolduc in
RicoSuter/NSwag#4820
* Prioritize wildcard over json over first entry for accept content-type
by @​mdi1984 in RicoSuter/NSwag#5198
* Reduce interface dispatch to improve performance by @​lahma in
RicoSuter/NSwag#5199
* Surface ExtensionData in CSharpControllerTemplateModel by @​hirudan in
RicoSuter/NSwag#5204
* Expose the UseRequiredKeyword on CSharpClientGeneratorSettings for
CSharp client generator by @​r-englund in
RicoSuter/NSwag#5205
* Fix to expose an optional param for AbortSignal (for axios) /
CancelToken (for fetch) when GenerateClientInterfaces = true by @​tomvdk
in RicoSuter/NSwag#5202
* Sort client operation responses by status code by @​lahma in
RicoSuter/NSwag#5206
* TSC UpdateUseDtoClassAndDataConversionCodeProperties cleanup by
@​lahma in RicoSuter/NSwag#5212
* Update Microsoft.AspNetCore.* references to target 2.3.0 by @​lahma in
RicoSuter/NSwag#5214
* Convert to using Central Package Management by @​lahma in
RicoSuter/NSwag#5217
* Convert NSwagStudio setup to use WiX 6 by @​lahma in
RicoSuter/NSwag#5218
* Add support for TypeScript compilation testing by @​lahma in
RicoSuter/NSwag#5219
* Replace TypeScript string contain asserts with Verify tests by @​lahma
in RicoSuter/NSwag#5220
* Replace C# string contain asserts with Verify tests by @​lahma in
RicoSuter/NSwag#5221
* Remove deprecated tslint suppression by @​CaringDev in
RicoSuter/NSwag#5020
* Fix empty enumerable parameter handling in C# client by @​lahma in
RicoSuter/NSwag#5222
* Fix: C# Code Generation generates method with return default(void) by
@​nzeemin in RicoSuter/NSwag#4826
* Optimize DefaultParameterNameGenerator and add some more char cleanup
by @​lahma in RicoSuter/NSwag#5223
* Convert more tests to use verify by @​lahma in
RicoSuter/NSwag#5224
* Convert to xUnit v3 by @​lahma in
RicoSuter/NSwag#5225
* Ensure operation names start with alphanumeric character by @​lahma in
RicoSuter/NSwag#5227
* Change GenerateSampleSpecificationTests to auto verify mode by @​lahma
in RicoSuter/NSwag#5228
* Show DisplayName for conflicting actions by @​Saibamen in
RicoSuter/NSwag#5057
* Fix: When generated TS class name is "Error", it is conflicting with
TS Error class by @​doruk-info in
RicoSuter/NSwag#5032
* Update NJsonSchema to 11.4.0, update testsuite to reflect a change in
class name generation by @​WolfgangHG in
RicoSuter/NSwag#5177
* Improve nswag.js parameter handling by @​KaterSchnurz in
RicoSuter/NSwag#5232
* Use TypeScript 4.3 as default testing version by @​lahma in
RicoSuter/NSwag#5234
* v14.5.0 by @​RicoSuter in RicoSuter/NSwag#5236

## New Contributors

* @​simonthum made their first contribution in
RicoSuter/NSwag#5170
* @​thompson-tomo made their first contribution in
RicoSuter/NSwag#4831
* @​Khyalis made their first contribution in
RicoSuter/NSwag#5149
* @​carlbjorknas made their first contribution in
RicoSuter/NSwag#4962
* @​Phoosha made their first contribution in
RicoSuter/NSwag#5176
* @​arshrp made their first contribution in
RicoSuter/NSwag#5187
* @​pbolduc made their first contribution in
RicoSuter/NSwag#4820
 ... (truncated)

Commits viewable in [compare
view](RicoSuter/NSwag@v14.4.0...v14.5.0).
</details>

Updated
[NSwag.Generation.AspNetCore](https://github.com/RicoSuter/NSwag) from
14.4.0 to 14.5.0.

<details>
<summary>Release notes</summary>

_Sourced from [NSwag.Generation.AspNetCore's
releases](https://github.com/RicoSuter/NSwag/releases)._

## 14.5.0

## What's Changed

* Better support for reading yaml from a stream by @​simonthum in
RicoSuter/NSwag#5170
* #​4821 Cleanup packages to use those provided by framework by
@​thompson-tomo in RicoSuter/NSwag#4831
* Set GH actions target .NET SDK to 9.0.204 by @​lahma in
RicoSuter/NSwag#5172
* Better support for reading yaml from a stream (part two) by
@​simonthum in RicoSuter/NSwag#5171
* Avoid multiple enumeration of array typed path parameters by @​Khyalis
in RicoSuter/NSwag#5149
* Restores all disabled compiler warnings. 649 and 8765 were missing. by
@​carlbjorknas in RicoSuter/NSwag#4962
* Fix to explode array parameters implicitly when SchemaType is OpenAPI
3.0 by @​Phoosha in RicoSuter/NSwag#5176
* Adding cancellationToken to all calls to ReadAsStringAsync() and
ReadAsStreamAsync() by @​arshrp in
RicoSuter/NSwag#5187
* Remove requirement for specific NET SDK in GH Actions by @​lahma in
RicoSuter/NSwag#5188
* Adjusted cancellationToken to work for all NSwag supported frameworks
by @​arshrp in RicoSuter/NSwag#5190
* Allow setting of the client interface access modifier based on the
model access modifier by @​pbolduc in
RicoSuter/NSwag#4820
* Prioritize wildcard over json over first entry for accept content-type
by @​mdi1984 in RicoSuter/NSwag#5198
* Reduce interface dispatch to improve performance by @​lahma in
RicoSuter/NSwag#5199
* Surface ExtensionData in CSharpControllerTemplateModel by @​hirudan in
RicoSuter/NSwag#5204
* Expose the UseRequiredKeyword on CSharpClientGeneratorSettings for
CSharp client generator by @​r-englund in
RicoSuter/NSwag#5205
* Fix to expose an optional param for AbortSignal (for axios) /
CancelToken (for fetch) when GenerateClientInterfaces = true by @​tomvdk
in RicoSuter/NSwag#5202
* Sort client operation responses by status code by @​lahma in
RicoSuter/NSwag#5206
* TSC UpdateUseDtoClassAndDataConversionCodeProperties cleanup by
@​lahma in RicoSuter/NSwag#5212
* Update Microsoft.AspNetCore.* references to target 2.3.0 by @​lahma in
RicoSuter/NSwag#5214
* Convert to using Central Package Management by @​lahma in
RicoSuter/NSwag#5217
* Convert NSwagStudio setup to use WiX 6 by @​lahma in
RicoSuter/NSwag#5218
* Add support for TypeScript compilation testing by @​lahma in
RicoSuter/NSwag#5219
* Replace TypeScript string contain asserts with Verify tests by @​lahma
in RicoSuter/NSwag#5220
* Replace C# string contain asserts with Verify tests by @​lahma in
RicoSuter/NSwag#5221
* Remove deprecated tslint suppression by @​CaringDev in
RicoSuter/NSwag#5020
* Fix empty enumerable parameter handling in C# client by @​lahma in
RicoSuter/NSwag#5222
* Fix: C# Code Generation generates method with return default(void) by
@​nzeemin in RicoSuter/NSwag#4826
* Optimize DefaultParameterNameGenerator and add some more char cleanup
by @​lahma in RicoSuter/NSwag#5223
* Convert more tests to use verify by @​lahma in
RicoSuter/NSwag#5224
* Convert to xUnit v3 by @​lahma in
RicoSuter/NSwag#5225
* Ensure operation names start with alphanumeric character by @​lahma in
RicoSuter/NSwag#5227
* Change GenerateSampleSpecificationTests to auto verify mode by @​lahma
in RicoSuter/NSwag#5228
* Show DisplayName for conflicting actions by @​Saibamen in
RicoSuter/NSwag#5057
* Fix: When generated TS class name is "Error", it is conflicting with
TS Error class by @​doruk-info in
RicoSuter/NSwag#5032
* Update NJsonSchema to 11.4.0, update testsuite to reflect a change in
class name generation by @​WolfgangHG in
RicoSuter/NSwag#5177
* Improve nswag.js parameter handling by @​KaterSchnurz in
RicoSuter/NSwag#5232
* Use TypeScript 4.3 as default testing version by @​lahma in
RicoSuter/NSwag#5234
* v14.5.0 by @​RicoSuter in RicoSuter/NSwag#5236

## New Contributors

* @​simonthum made their first contribution in
RicoSuter/NSwag#5170
* @​thompson-tomo made their first contribution in
RicoSuter/NSwag#4831
* @​Khyalis made their first contribution in
RicoSuter/NSwag#5149
* @​carlbjorknas made their first contribution in
RicoSuter/NSwag#4962
* @​Phoosha made their first contribution in
RicoSuter/NSwag#5176
* @​arshrp made their first contribution in
RicoSuter/NSwag#5187
* @​pbolduc made their first contribution in
RicoSuter/NSwag#4820
 ... (truncated)

Commits viewable in [compare
view](RicoSuter/NSwag@v14.4.0...v14.5.0).
</details>

Updated [NSwag.MSBuild](https://github.com/RicoSuter/NSwag) from 14.4.0
to 14.5.0.

<details>
<summary>Release notes</summary>

_Sourced from [NSwag.MSBuild's
releases](https://github.com/RicoSuter/NSwag/releases)._

## 14.5.0

## What's Changed

* Better support for reading yaml from a stream by @​simonthum in
RicoSuter/NSwag#5170
* #​4821 Cleanup packages to use those provided by framework by
@​thompson-tomo in RicoSuter/NSwag#4831
* Set GH actions target .NET SDK to 9.0.204 by @​lahma in
RicoSuter/NSwag#5172
* Better support for reading yaml from a stream (part two) by
@​simonthum in RicoSuter/NSwag#5171
* Avoid multiple enumeration of array typed path parameters by @​Khyalis
in RicoSuter/NSwag#5149
* Restores all disabled compiler warnings. 649 and 8765 were missing. by
@​carlbjorknas in RicoSuter/NSwag#4962
* Fix to explode array parameters implicitly when SchemaType is OpenAPI
3.0 by @​Phoosha in RicoSuter/NSwag#5176
* Adding cancellationToken to all calls to ReadAsStringAsync() and
ReadAsStreamAsync() by @​arshrp in
RicoSuter/NSwag#5187
* Remove requirement for specific NET SDK in GH Actions by @​lahma in
RicoSuter/NSwag#5188
* Adjusted cancellationToken to work for all NSwag supported frameworks
by @​arshrp in RicoSuter/NSwag#5190
* Allow setting of the client interface access modifier based on the
model access modifier by @​pbolduc in
RicoSuter/NSwag#4820
* Prioritize wildcard over json over first entry for accept content-type
by @​mdi1984 in RicoSuter/NSwag#5198
* Reduce interface dispatch to improve performance by @​lahma in
RicoSuter/NSwag#5199
* Surface ExtensionData in CSharpControllerTemplateModel by @​hirudan in
RicoSuter/NSwag#5204
* Expose the UseRequiredKeyword on CSharpClientGeneratorSettings for
CSharp client generator by @​r-englund in
RicoSuter/NSwag#5205
* Fix to expose an optional param for AbortSignal (for axios) /
CancelToken (for fetch) when GenerateClientInterfaces = true by @​tomvdk
in RicoSuter/NSwag#5202
* Sort client operation responses by status code by @​lahma in
RicoSuter/NSwag#5206
* TSC UpdateUseDtoClassAndDataConversionCodeProperties cleanup by
@​lahma in RicoSuter/NSwag#5212
* Update Microsoft.AspNetCore.* references to target 2.3.0 by @​lahma in
RicoSuter/NSwag#5214
* Convert to using Central Package Management by @​lahma in
RicoSuter/NSwag#5217
* Convert NSwagStudio setup to use WiX 6 by @​lahma in
RicoSuter/NSwag#5218
* Add support for TypeScript compilation testing by @​lahma in
RicoSuter/NSwag#5219
* Replace TypeScript string contain asserts with Verify tests by @​lahma
in RicoSuter/NSwag#5220
* Replace C# string contain asserts with Verify tests by @​lahma in
RicoSuter/NSwag#5221
* Remove deprecated tslint suppression by @​CaringDev in
RicoSuter/NSwag#5020
* Fix empty enumerable parameter handling in C# client by @​lahma in
RicoSuter/NSwag#5222
* Fix: C# Code Generation generates method with return default(void) by
@​nzeemin in RicoSuter/NSwag#4826
* Optimize DefaultParameterNameGenerator and add some more char cleanup
by @​lahma in RicoSuter/NSwag#5223
* Convert more tests to use verify by @​lahma in
RicoSuter/NSwag#5224
* Convert to xUnit v3 by @​lahma in
RicoSuter/NSwag#5225
* Ensure operation names start with alphanumeric character by @​lahma in
RicoSuter/NSwag#5227
* Change GenerateSampleSpecificationTests to auto verify mode by @​lahma
in RicoSuter/NSwag#5228
* Show DisplayName for conflicting actions by @​Saibamen in
RicoSuter/NSwag#5057
* Fix: When generated TS class name is "Error", it is conflicting with
TS Error class by @​doruk-info in
RicoSuter/NSwag#5032
* Update NJsonSchema to 11.4.0, update testsuite to reflect a change in
class name generation by @​WolfgangHG in
RicoSuter/NSwag#5177
* Improve nswag.js parameter handling by @​KaterSchnurz in
RicoSuter/NSwag#5232
* Use TypeScript 4.3 as default testing version by @​lahma in
RicoSuter/NSwag#5234
* v14.5.0 by @​RicoSuter in RicoSuter/NSwag#5236

## New Contributors

* @​simonthum made their first contribution in
RicoSuter/NSwag#5170
* @​thompson-tomo made their first contribution in
RicoSuter/NSwag#4831
* @​Khyalis made their first contribution in
RicoSuter/NSwag#5149
* @​carlbjorknas made their first contribution in
RicoSuter/NSwag#4962
* @​Phoosha made their first contribution in
RicoSuter/NSwag#5176
* @​arshrp made their first contribution in
RicoSuter/NSwag#5187
* @​pbolduc made their first contribution in
RicoSuter/NSwag#4820
 ... (truncated)

Commits viewable in [compare
view](RicoSuter/NSwag@v14.4.0...v14.5.0).
</details>

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore <dependency name> major version` will close this
group update PR and stop Dependabot creating any more for the specific
dependency's major version (unless you unignore this specific
dependency's major version or upgrade to it yourself)
- `@dependabot ignore <dependency name> minor version` will close this
group update PR and stop Dependabot creating any more for the specific
dependency's minor version (unless you unignore this specific
dependency's minor version or upgrade to it yourself)
- `@dependabot ignore <dependency name>` will close this group update PR
and stop Dependabot creating any more for the specific dependency
(unless you unignore this specific dependency or upgrade to it yourself)
- `@dependabot unignore <dependency name>` will remove all of the ignore
conditions of the specified dependency
- `@dependabot unignore <dependency name> <ignore condition>` will
remove the ignore condition of the specified dependency and ignore
conditions


</details>

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants