[BUG][csharp-netcore] anyOf/oneOf generates non-compilable code (null-coalescing operator on enum)
Created by: Ikelio
Bug Report Checklist
-
Have you provided a full/minimal spec to reproduce the issue? -
Have you validated the input using an OpenAPI validator (example)? -
Have you tested with the latest master to confirm the issue still exists? -
Have you searched for related issues/PRs? -
What's the actual output vs expected output? -
[Optional] Sponsorship to speed up the bug fix or feature request (example)
Description
AnyOf/OneOf with an enum will generate non-compilable C# code (using null coalescing operator on an enum): For instance with a oneof parameter schema:
"schema": {
"oneOf": [
{
"title": "firstEnum",
"enum": [
"one",
"two"
]
},
{
"title": "secondEnum",
"type": "integer",
"enum": [
"0",
"1"
]
}
]
}
Incorrect code:
/// <summary>
/// Initializes a new instance of the <see cref="MyOperationAParameter" /> class
/// with the <see cref="FirstEnum" /> class
/// </summary>
/// <param name="actualInstance">An instance of FirstEnum.</param>
public MyOperationAParameter(FirstEnum actualInstance)
{
this.IsNullable = false;
this.SchemaType= "oneOf";
this.ActualInstance = actualInstance ?? throw new ArgumentException("Invalid instance found. Must not be null.");
}
/// <summary>
/// Initializes a new instance of the <see cref="MyOperationAParameter" /> class
/// with the <see cref="SecondEnum" /> class
/// </summary>
/// <param name="actualInstance">An instance of SecondEnum.</param>
public MyOperationAParameter(SecondEnum actualInstance)
{
this.IsNullable = false;
this.SchemaType= "oneOf";
this.ActualInstance = actualInstance ?? throw new ArgumentException("Invalid instance found. Must not be null.");
}
Expected output:
/// <summary>
/// Initializes a new instance of the <see cref="MyOperationAParameter" /> class
/// with the <see cref="FirstEnum" /> class
/// </summary>
/// <param name="actualInstance">An instance of FirstEnum.</param>
public MyOperationAParameter(FirstEnum actualInstance)
{
this.IsNullable = false;
this.SchemaType= "oneOf";
this.ActualInstance = actualInstance;
}
/// <summary>
/// Initializes a new instance of the <see cref="MyOperationAParameter" /> class
/// with the <see cref="SecondEnum" /> class
/// </summary>
/// <param name="actualInstance">An instance of SecondEnum.</param>
public MyOperationAParameter(SecondEnum actualInstance)
{
this.IsNullable = false;
this.SchemaType= "oneOf";
this.ActualInstance = actualInstance;
}
openapi-generator version
6.0.1
OpenAPI declaration file content or url
anyOf/oneOf with an enum. See in Description.
Steps to reproduce
generate csharp-netcore project with any specification file containing similar anyOf/oneOf.
Related issues/PRs
Suggest a fix
I'll reference this in fix PR.