[csharp] Fixed discriminator (#20624)

* fixed discriminator

* build samples

* minor refactors

* build samples

* replaced boolean with protected method

---------

Co-authored-by: devhl <shawnkanyer@gmail.com>
This commit is contained in:
William Cheng 2025-02-09 22:32:17 +08:00 committed by GitHub
parent 97c805f0e0
commit 61262e939a
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
375 changed files with 18145 additions and 409 deletions

View File

@ -555,7 +555,7 @@ public class DefaultCodegen implements CodegenConfig {
? false
: model.parentModel.allVars.stream().anyMatch(p ->
p.name.equals(property.name) &&
(p.dataType.equals(property.dataType) == false || p.datatypeWithEnum.equals(property.datatypeWithEnum) == false || p.isDiscriminator));
(p.dataType.equals(property.dataType) == false || p.datatypeWithEnum.equals(property.datatypeWithEnum) == false));
}
/**

View File

@ -726,6 +726,10 @@ public abstract class AbstractCSharpCodegen extends DefaultCodegen {
property.vendorExtensions.put("x-is-value-type", isValueType);
property.vendorExtensions.put("x-is-reference-type", !isValueType);
property.vendorExtensions.put("x-is-nullable-type", this.getNullableReferencesTypes() || isValueType);
property.vendorExtensions.put("x-is-base-or-new-discriminator", (property.isDiscriminator && !property.isInherited) || (property.isDiscriminator && property.isNew));
}
protected void patchPropertyIsInherited(CodegenModel model, CodegenProperty property) {
}
protected void patchProperty(Map<String, CodegenModel> enumRefs, CodegenModel model, CodegenProperty property) {
@ -741,6 +745,8 @@ public abstract class AbstractCSharpCodegen extends DefaultCodegen {
property.isPrimitiveType = true;
}
this.patchPropertyIsInherited(model, property);
patchPropertyVendorExtensions(property);
property.name = patchPropertyName(model, property.name);

View File

@ -1608,6 +1608,18 @@ public class CSharpClientCodegen extends AbstractCSharpCodegen {
}
}
@Override
protected void patchPropertyIsInherited(CodegenModel model, CodegenProperty property) {
if (GENERICHOST.equals(getLibrary())) {
// the isInherited property is not always correct
// fixing it here causes a breaking change in some generators
// only do this in generators that are prepared for the improvement
if (model.parentModel != null && model.parentModel.allVars.stream().anyMatch(v -> v.baseName.equals(property.baseName))) {
property.isInherited = true;
}
}
}
@Override
protected void patchProperty(Map<String, CodegenModel> enumRefs, CodegenModel model, CodegenProperty property) {
super.patchProperty(enumRefs, model, property);
@ -1616,10 +1628,6 @@ public class CSharpClientCodegen extends AbstractCSharpCodegen {
if (!property.isContainer && (this.getNullableTypes().contains(property.dataType) || property.isEnum)) {
property.vendorExtensions.put("x-csharp-value-type", true);
}
} else {
if (model.parentModel != null && model.parentModel.allVars.stream().anyMatch(v -> v.baseName.equals(property.baseName))) {
property.isInherited = true;
}
}
}

View File

@ -439,7 +439,7 @@
{{#isDiscriminator}}
{{^model.composedSchemas.anyOf}}
{{^model.composedSchemas.oneOf}}
writer.WriteString("{{baseName}}", {{^isEnum}}{{#lambda.camelcase_sanitize_param}}{{classname}}{{/lambda.camelcase_sanitize_param}}.{{name}}{{/isEnum}}{{#isNew}}{{#isEnum}}{{#isInnerEnum}}{{classname}}.{{{datatypeWithEnum}}}ToJsonValue{{/isInnerEnum}}{{^isInnerEnum}}{{{datatypeWithEnum}}}ValueConverter.ToJsonValue{{/isInnerEnum}}({{#lambda.camelcase_sanitize_param}}{{classname}}{{/lambda.camelcase_sanitize_param}}.{{name}}{{^required}}.Value{{/required}}){{/isEnum}}{{/isNew}});
writer.WriteString("{{baseName}}", {{^isEnum}}{{#lambda.camelcase_sanitize_param}}{{classname}}{{/lambda.camelcase_sanitize_param}}.{{name}}{{/isEnum}}{{#isEnum}}{{#isInnerEnum}}{{classname}}.{{{datatypeWithEnum}}}ToJsonValue{{/isInnerEnum}}{{^isInnerEnum}}{{{datatypeWithEnum}}}ValueConverter.ToJsonValue{{/isInnerEnum}}({{#lambda.camelcase_sanitize_param}}{{classname}}{{/lambda.camelcase_sanitize_param}}.{{name}}{{^required}}.Value{{/required}}){{/isEnum}});
{{/model.composedSchemas.oneOf}}
{{/model.composedSchemas.anyOf}}

View File

@ -34,6 +34,13 @@
{{/isNew}}
{{/isInherited}}
{{/isDiscriminator}}
{{#vendorExtensions.x-is-base-or-new-discriminator}}
{{^model.composedSchemas.anyOf}}
{{^model.composedSchemas.oneOf}}
{{name}} = {{^isEnum}}this.GetType().Name{{/isEnum}}{{#isEnum}}({{datatypeWithEnum}})Enum.Parse(typeof({{datatypeWithEnum}}), this.GetType().Name){{/isEnum}};
{{/model.composedSchemas.oneOf}}
{{/model.composedSchemas.anyOf}}
{{/vendorExtensions.x-is-base-or-new-discriminator}}
{{/allVars}}
OnCreated();
}
@ -71,6 +78,13 @@
{{/isNew}}
{{/isInherited}}
{{/isDiscriminator}}
{{#vendorExtensions.x-is-base-or-new-discriminator}}
{{^model.composedSchemas.anyOf}}
{{^model.composedSchemas.oneOf}}
{{name}} = {{^isEnum}}this.GetType().Name{{/isEnum}}{{#isEnum}}({{datatypeWithEnum}})Enum.Parse(typeof({{datatypeWithEnum}}), this.GetType().Name){{/isEnum}};
{{/model.composedSchemas.oneOf}}
{{/model.composedSchemas.anyOf}}
{{/vendorExtensions.x-is-base-or-new-discriminator}}
{{/allVars}}
OnCreated();
}
@ -162,7 +176,7 @@
{{/vendorExtensions.x-duplicated-data-type}}
{{/composedSchemas.oneOf}}
{{#allVars}}
{{#isDiscriminator}}
{{#vendorExtensions.x-is-base-or-new-discriminator}}
{{^model.composedSchemas.anyOf}}
{{^model.composedSchemas.oneOf}}
/// <summary>
@ -170,12 +184,12 @@
/// </summary>
[JsonIgnore]
[global::System.ComponentModel.EditorBrowsable(global::System.ComponentModel.EditorBrowsableState.Never)]
public {{#isNew}}new {{/isNew}}{{datatypeWithEnum}} {{name}} { get; } = {{^isNew}}"{{classname}}"{{/isNew}}{{#isNew}}{{^isEnum}}"{{classname}}"{{/isEnum}}{{#isEnum}}({{datatypeWithEnum}})Enum.Parse(typeof({{datatypeWithEnum}}), "{{classname}}"){{/isEnum}}{{/isNew}};
public {{#isNew}}new {{/isNew}}{{datatypeWithEnum}} {{name}} { get; }
{{/model.composedSchemas.oneOf}}
{{/model.composedSchemas.anyOf}}
{{/isDiscriminator}}
{{^isDiscriminator}}
{{/vendorExtensions.x-is-base-or-new-discriminator}}
{{^vendorExtensions.x-is-base-or-new-discriminator}}
{{^isEnum}}
{{#isInherited}}
{{#isNew}}
@ -228,7 +242,7 @@
{{/isInherited}}
{{/isEnum}}
{{/isDiscriminator}}
{{/vendorExtensions.x-is-base-or-new-discriminator}}
{{/allVars}}
{{#isAdditionalPropertiesTrue}}
{{^parentModel}}

View File

@ -2836,6 +2836,40 @@ components:
properties:
id:
type: string
Descendant1:
allOf:
- $ref: "#/components/schemas/TestDescendants"
- required:
- "descendantName"
type: "object"
properties:
descendantName:
type: "string"
Descendant2:
allOf:
- $ref: "#/components/schemas/TestDescendants"
- required:
- "confidentiality"
type: "object"
properties:
confidentiality:
type: "string"
TestDescendants:
required:
- "alternativeName"
- "objectType"
type: "object"
properties:
alternativeName:
type: "string"
objectType:
type: "string"
enum:
- "Descendant1"
- "Descendant2"
description: ""
discriminator:
propertyName: "objectType"
CopyActivity:
type: object
required:

View File

@ -57,13 +57,6 @@ namespace Org.OpenAPITools.Model
[JsonPropertyName("children")]
public List<Child> Children { get { return this.ChildrenOption; } set { this.ChildrenOption = new Option<List<Child>>(value); } }
/// <summary>
/// The discriminator
/// </summary>
[JsonIgnore]
[global::System.ComponentModel.EditorBrowsable(global::System.ComponentModel.EditorBrowsableState.Never)]
public new string Type { get; } = "Adult";
/// <summary>
/// Returns the string presentation of the object
/// </summary>

View File

@ -59,13 +59,6 @@ namespace Org.OpenAPITools.Model
[JsonPropertyName("age")]
public int? Age { get { return this.AgeOption; } set { this.AgeOption = new Option<int?>(value); } }
/// <summary>
/// The discriminator
/// </summary>
[JsonIgnore]
[global::System.ComponentModel.EditorBrowsable(global::System.ComponentModel.EditorBrowsableState.Never)]
public new string Type { get; } = "Child";
/// <summary>
/// Used to track the state of BoosterSeat
/// </summary>

View File

@ -39,6 +39,7 @@ namespace Org.OpenAPITools.Model
{
FirstNameOption = firstName;
LastNameOption = lastName;
Type = this.GetType().Name;
OnCreated();
}
@ -75,7 +76,7 @@ namespace Org.OpenAPITools.Model
/// </summary>
[JsonIgnore]
[global::System.ComponentModel.EditorBrowsable(global::System.ComponentModel.EditorBrowsableState.Never)]
public string Type { get; } = "Person";
public string Type { get; }
/// <summary>
/// Gets or Sets additional properties

View File

@ -34,6 +34,8 @@ docs/models/CopyActivity.md
docs/models/DanishPig.md
docs/models/DateOnlyClass.md
docs/models/DeprecatedObject.md
docs/models/Descendant1.md
docs/models/Descendant2.md
docs/models/Dog.md
docs/models/Drawing.md
docs/models/EntityBase.md
@ -116,6 +118,8 @@ docs/models/SpecialModelName.md
docs/models/Tag.md
docs/models/TestCollectionEndingWithWordList.md
docs/models/TestCollectionEndingWithWordListObject.md
docs/models/TestDescendants.md
docs/models/TestDescendantsObjectType.md
docs/models/TestEnumParametersEnumHeaderStringParameter.md
docs/models/TestEnumParametersEnumQueryDoubleParameter.md
docs/models/TestEnumParametersEnumQueryIntegerParameter.md
@ -195,6 +199,8 @@ src/Org.OpenAPITools/Model/CopyActivity.cs
src/Org.OpenAPITools/Model/DanishPig.cs
src/Org.OpenAPITools/Model/DateOnlyClass.cs
src/Org.OpenAPITools/Model/DeprecatedObject.cs
src/Org.OpenAPITools/Model/Descendant1.cs
src/Org.OpenAPITools/Model/Descendant2.cs
src/Org.OpenAPITools/Model/Dog.cs
src/Org.OpenAPITools/Model/Drawing.cs
src/Org.OpenAPITools/Model/EntityBase.cs
@ -277,6 +283,8 @@ src/Org.OpenAPITools/Model/SpecialModelName.cs
src/Org.OpenAPITools/Model/Tag.cs
src/Org.OpenAPITools/Model/TestCollectionEndingWithWordList.cs
src/Org.OpenAPITools/Model/TestCollectionEndingWithWordListObject.cs
src/Org.OpenAPITools/Model/TestDescendants.cs
src/Org.OpenAPITools/Model/TestDescendantsObjectType.cs
src/Org.OpenAPITools/Model/TestEnumParametersEnumHeaderStringParameter.cs
src/Org.OpenAPITools/Model/TestEnumParametersEnumQueryDoubleParameter.cs
src/Org.OpenAPITools/Model/TestEnumParametersEnumQueryIntegerParameter.cs

View File

@ -2592,6 +2592,37 @@ components:
properties:
id:
type: string
Descendant1:
allOf:
- $ref: '#/components/schemas/TestDescendants'
- properties:
descendantName:
type: string
required:
- descendantName
type: object
Descendant2:
allOf:
- $ref: '#/components/schemas/TestDescendants'
- properties:
confidentiality:
type: string
required:
- confidentiality
type: object
TestDescendants:
description: ""
discriminator:
propertyName: objectType
properties:
alternativeName:
type: string
objectType:
$ref: '#/components/schemas/TestDescendants_objectType'
required:
- alternativeName
- objectType
type: object
CopyActivity:
allOf:
- $ref: '#/components/schemas/EntityBase'
@ -2984,6 +3015,11 @@ components:
type: number
- $ref: '#/components/schemas/MixedSubId'
description: Mixed anyOf types for testing
TestDescendants_objectType:
enum:
- Descendant1
- Descendant2
type: string
securitySchemes:
petstore_auth:
flows:

View File

@ -0,0 +1,12 @@
# Org.OpenAPITools.Model.Descendant1
## Properties
Name | Type | Description | Notes
------------ | ------------- | ------------- | -------------
**AlternativeName** | **string** | |
**ObjectType** | **TestDescendantsObjectType** | |
**DescendantName** | **string** | |
[[Back to Model list]](../../README.md#documentation-for-models) [[Back to API list]](../../README.md#documentation-for-api-endpoints) [[Back to README]](../../README.md)

View File

@ -0,0 +1,12 @@
# Org.OpenAPITools.Model.Descendant2
## Properties
Name | Type | Description | Notes
------------ | ------------- | ------------- | -------------
**AlternativeName** | **string** | |
**ObjectType** | **TestDescendantsObjectType** | |
**Confidentiality** | **string** | |
[[Back to Model list]](../../README.md#documentation-for-models) [[Back to API list]](../../README.md#documentation-for-api-endpoints) [[Back to README]](../../README.md)

View File

@ -0,0 +1,11 @@
# Org.OpenAPITools.Model.TestDescendants
## Properties
Name | Type | Description | Notes
------------ | ------------- | ------------- | -------------
**AlternativeName** | **string** | |
**ObjectType** | **TestDescendantsObjectType** | |
[[Back to Model list]](../../README.md#documentation-for-models) [[Back to API list]](../../README.md#documentation-for-api-endpoints) [[Back to README]](../../README.md)

View File

@ -0,0 +1,9 @@
# Org.OpenAPITools.Model.TestDescendantsObjectType
## Properties
Name | Type | Description | Notes
------------ | ------------- | ------------- | -------------
[[Back to Model list]](../../README.md#documentation-for-models) [[Back to API list]](../../README.md#documentation-for-api-endpoints) [[Back to README]](../../README.md)

View File

@ -0,0 +1,65 @@
/*
* OpenAPI Petstore
*
* This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\
*
* The version of the OpenAPI document: 1.0.0
* Generated by: https://github.com/openapitools/openapi-generator.git
*/
using Xunit;
using System;
using System.Linq;
using System.IO;
using System.Collections.Generic;
using Org.OpenAPITools.Model;
using Org.OpenAPITools.Client;
using System.Reflection;
namespace Org.OpenAPITools.Test.Model
{
/// <summary>
/// Class for testing Descendant1
/// </summary>
/// <remarks>
/// This file is automatically generated by OpenAPI Generator (https://openapi-generator.tech).
/// Please update the test case below to test the model.
/// </remarks>
public class Descendant1Tests : IDisposable
{
// TODO uncomment below to declare an instance variable for Descendant1
//private Descendant1 instance;
public Descendant1Tests()
{
// TODO uncomment below to create an instance of Descendant1
//instance = new Descendant1();
}
public void Dispose()
{
// Cleanup when everything is done.
}
/// <summary>
/// Test an instance of Descendant1
/// </summary>
[Fact]
public void Descendant1InstanceTest()
{
// TODO uncomment below to test "IsType" Descendant1
//Assert.IsType<Descendant1>(instance);
}
/// <summary>
/// Test the property 'DescendantName'
/// </summary>
[Fact]
public void DescendantNameTest()
{
// TODO unit test for the property 'DescendantName'
}
}
}

View File

@ -0,0 +1,65 @@
/*
* OpenAPI Petstore
*
* This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\
*
* The version of the OpenAPI document: 1.0.0
* Generated by: https://github.com/openapitools/openapi-generator.git
*/
using Xunit;
using System;
using System.Linq;
using System.IO;
using System.Collections.Generic;
using Org.OpenAPITools.Model;
using Org.OpenAPITools.Client;
using System.Reflection;
namespace Org.OpenAPITools.Test.Model
{
/// <summary>
/// Class for testing Descendant2
/// </summary>
/// <remarks>
/// This file is automatically generated by OpenAPI Generator (https://openapi-generator.tech).
/// Please update the test case below to test the model.
/// </remarks>
public class Descendant2Tests : IDisposable
{
// TODO uncomment below to declare an instance variable for Descendant2
//private Descendant2 instance;
public Descendant2Tests()
{
// TODO uncomment below to create an instance of Descendant2
//instance = new Descendant2();
}
public void Dispose()
{
// Cleanup when everything is done.
}
/// <summary>
/// Test an instance of Descendant2
/// </summary>
[Fact]
public void Descendant2InstanceTest()
{
// TODO uncomment below to test "IsType" Descendant2
//Assert.IsType<Descendant2>(instance);
}
/// <summary>
/// Test the property 'Confidentiality'
/// </summary>
[Fact]
public void ConfidentialityTest()
{
// TODO unit test for the property 'Confidentiality'
}
}
}

View File

@ -0,0 +1,56 @@
/*
* OpenAPI Petstore
*
* This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\
*
* The version of the OpenAPI document: 1.0.0
* Generated by: https://github.com/openapitools/openapi-generator.git
*/
using Xunit;
using System;
using System.Linq;
using System.IO;
using System.Collections.Generic;
using Org.OpenAPITools.Model;
using Org.OpenAPITools.Client;
using System.Reflection;
namespace Org.OpenAPITools.Test.Model
{
/// <summary>
/// Class for testing TestDescendantsObjectType
/// </summary>
/// <remarks>
/// This file is automatically generated by OpenAPI Generator (https://openapi-generator.tech).
/// Please update the test case below to test the model.
/// </remarks>
public class TestDescendantsObjectTypeTests : IDisposable
{
// TODO uncomment below to declare an instance variable for TestDescendantsObjectType
//private TestDescendantsObjectType instance;
public TestDescendantsObjectTypeTests()
{
// TODO uncomment below to create an instance of TestDescendantsObjectType
//instance = new TestDescendantsObjectType();
}
public void Dispose()
{
// Cleanup when everything is done.
}
/// <summary>
/// Test an instance of TestDescendantsObjectType
/// </summary>
[Fact]
public void TestDescendantsObjectTypeInstanceTest()
{
// TODO uncomment below to test "IsType" TestDescendantsObjectType
//Assert.IsType<TestDescendantsObjectType>(instance);
}
}
}

View File

@ -0,0 +1,94 @@
/*
* OpenAPI Petstore
*
* This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\
*
* The version of the OpenAPI document: 1.0.0
* Generated by: https://github.com/openapitools/openapi-generator.git
*/
using Xunit;
using System;
using System.Linq;
using System.IO;
using System.Collections.Generic;
using Org.OpenAPITools.Model;
using Org.OpenAPITools.Client;
using System.Reflection;
namespace Org.OpenAPITools.Test.Model
{
/// <summary>
/// Class for testing TestDescendants
/// </summary>
/// <remarks>
/// This file is automatically generated by OpenAPI Generator (https://openapi-generator.tech).
/// Please update the test case below to test the model.
/// </remarks>
public class TestDescendantsTests : IDisposable
{
// TODO uncomment below to declare an instance variable for TestDescendants
//private TestDescendants instance;
public TestDescendantsTests()
{
// TODO uncomment below to create an instance of TestDescendants
//instance = new TestDescendants();
}
public void Dispose()
{
// Cleanup when everything is done.
}
/// <summary>
/// Test an instance of TestDescendants
/// </summary>
[Fact]
public void TestDescendantsInstanceTest()
{
// TODO uncomment below to test "IsType" TestDescendants
//Assert.IsType<TestDescendants>(instance);
}
/// <summary>
/// Test deserialize a Descendant1 from type TestDescendants
/// </summary>
[Fact]
public void Descendant1DeserializeFromTestDescendantsTest()
{
// TODO uncomment below to test deserialize a Descendant1 from type TestDescendants
//Assert.IsType<TestDescendants>(JsonConvert.DeserializeObject<TestDescendants>(new Descendant1().ToJson()));
}
/// <summary>
/// Test deserialize a Descendant2 from type TestDescendants
/// </summary>
[Fact]
public void Descendant2DeserializeFromTestDescendantsTest()
{
// TODO uncomment below to test deserialize a Descendant2 from type TestDescendants
//Assert.IsType<TestDescendants>(JsonConvert.DeserializeObject<TestDescendants>(new Descendant2().ToJson()));
}
/// <summary>
/// Test the property 'AlternativeName'
/// </summary>
[Fact]
public void AlternativeNameTest()
{
// TODO unit test for the property 'AlternativeName'
}
/// <summary>
/// Test the property 'ObjectType'
/// </summary>
[Fact]
public void ObjectTypeTest()
{
// TODO unit test for the property 'ObjectType'
}
}
}

View File

@ -213,6 +213,8 @@ namespace Org.OpenAPITools.Client
return RequiredClassRequiredNullableEnumIntegerOnlyValueConverter.ToJsonValue(requiredClassRequiredNullableEnumIntegerOnly).ToString();
if (obj is RequiredClassRequiredNullableEnumString requiredClassRequiredNullableEnumString)
return RequiredClassRequiredNullableEnumStringValueConverter.ToJsonValue(requiredClassRequiredNullableEnumString);
if (obj is TestDescendantsObjectType testDescendantsObjectType)
return TestDescendantsObjectTypeValueConverter.ToJsonValue(testDescendantsObjectType);
if (obj is TestEnumParametersEnumHeaderStringParameter testEnumParametersEnumHeaderStringParameter)
return TestEnumParametersEnumHeaderStringParameterValueConverter.ToJsonValue(testEnumParametersEnumHeaderStringParameter);
if (obj is TestEnumParametersEnumQueryDoubleParameter testEnumParametersEnumQueryDoubleParameter)

View File

@ -64,6 +64,8 @@ namespace Org.OpenAPITools.Client
_jsonOptions.Converters.Add(new DanishPigJsonConverter());
_jsonOptions.Converters.Add(new DateOnlyClassJsonConverter());
_jsonOptions.Converters.Add(new DeprecatedObjectJsonConverter());
_jsonOptions.Converters.Add(new Descendant1JsonConverter());
_jsonOptions.Converters.Add(new Descendant2JsonConverter());
_jsonOptions.Converters.Add(new DogJsonConverter());
_jsonOptions.Converters.Add(new DrawingJsonConverter());
_jsonOptions.Converters.Add(new EntityBaseJsonConverter());
@ -167,6 +169,9 @@ namespace Org.OpenAPITools.Client
_jsonOptions.Converters.Add(new TagJsonConverter());
_jsonOptions.Converters.Add(new TestCollectionEndingWithWordListJsonConverter());
_jsonOptions.Converters.Add(new TestCollectionEndingWithWordListObjectJsonConverter());
_jsonOptions.Converters.Add(new TestDescendantsJsonConverter());
_jsonOptions.Converters.Add(new TestDescendantsObjectTypeJsonConverter());
_jsonOptions.Converters.Add(new TestDescendantsObjectTypeNullableJsonConverter());
_jsonOptions.Converters.Add(new TestEnumParametersEnumHeaderStringParameterJsonConverter());
_jsonOptions.Converters.Add(new TestEnumParametersEnumHeaderStringParameterNullableJsonConverter());
_jsonOptions.Converters.Add(new TestEnumParametersEnumQueryDoubleParameterJsonConverter());

View File

@ -36,6 +36,7 @@ namespace Org.OpenAPITools.Model
[JsonConstructor]
public Animal(Option<string> color = default)
{
ClassName = this.GetType().Name;
ColorOption = color;
OnCreated();
}
@ -47,7 +48,7 @@ namespace Org.OpenAPITools.Model
/// </summary>
[JsonIgnore]
[global::System.ComponentModel.EditorBrowsable(global::System.ComponentModel.EditorBrowsableState.Never)]
public string ClassName { get; } = "Animal";
public string ClassName { get; }
/// <summary>
/// Used to track the state of Color

View File

@ -43,13 +43,6 @@ namespace Org.OpenAPITools.Model
partial void OnCreated();
/// <summary>
/// The discriminator
/// </summary>
[JsonIgnore]
[global::System.ComponentModel.EditorBrowsable(global::System.ComponentModel.EditorBrowsableState.Never)]
public new string ClassName { get; } = "Cat";
/// <summary>
/// Used to track the state of Declawed
/// </summary>

View File

@ -36,6 +36,7 @@ namespace Org.OpenAPITools.Model
[JsonConstructor]
public ChildCat(Option<string> name = default) : base()
{
PetType = (ChildCatAllOfPetType)Enum.Parse(typeof(ChildCatAllOfPetType), this.GetType().Name);
NameOption = name;
OnCreated();
}
@ -47,7 +48,7 @@ namespace Org.OpenAPITools.Model
/// </summary>
[JsonIgnore]
[global::System.ComponentModel.EditorBrowsable(global::System.ComponentModel.EditorBrowsableState.Never)]
public new ChildCatAllOfPetType PetType { get; } = (ChildCatAllOfPetType)Enum.Parse(typeof(ChildCatAllOfPetType), "ChildCat");
public new ChildCatAllOfPetType PetType { get; }
/// <summary>
/// Used to track the state of Name

View File

@ -36,6 +36,7 @@ namespace Org.OpenAPITools.Model
[JsonConstructor]
public CopyActivity(string copyActivitytt) : base()
{
Schema = (SchemaEnum)Enum.Parse(typeof(SchemaEnum), this.GetType().Name);
CopyActivitytt = copyActivitytt;
OnCreated();
}
@ -99,7 +100,7 @@ namespace Org.OpenAPITools.Model
/// </summary>
[JsonIgnore]
[global::System.ComponentModel.EditorBrowsable(global::System.ComponentModel.EditorBrowsableState.Never)]
public new SchemaEnum Schema { get; } = (SchemaEnum)Enum.Parse(typeof(SchemaEnum), "CopyActivity");
public new SchemaEnum Schema { get; }
/// <summary>
/// Gets or Sets CopyActivitytt

View File

@ -0,0 +1,183 @@
// <auto-generated>
/*
* OpenAPI Petstore
*
* This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\
*
* The version of the OpenAPI document: 1.0.0
* Generated by: https://github.com/openapitools/openapi-generator.git
*/
using System;
using System.Collections;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Linq;
using System.IO;
using System.Text;
using System.Text.RegularExpressions;
using System.Text.Json;
using System.Text.Json.Serialization;
using System.ComponentModel.DataAnnotations;
using OpenAPIClientUtils = Org.OpenAPITools.Client.ClientUtils;
using Org.OpenAPITools.Client;
namespace Org.OpenAPITools.Model
{
/// <summary>
/// Descendant1
/// </summary>
public partial class Descendant1 : TestDescendants, IValidatableObject
{
/// <summary>
/// Initializes a new instance of the <see cref="Descendant1" /> class.
/// </summary>
/// <param name="alternativeName">alternativeName</param>
/// <param name="descendantName">descendantName</param>
[JsonConstructor]
public Descendant1(string alternativeName, string descendantName) : base(alternativeName)
{
DescendantName = descendantName;
OnCreated();
}
partial void OnCreated();
/// <summary>
/// Gets or Sets DescendantName
/// </summary>
[JsonPropertyName("descendantName")]
public string DescendantName { get; set; }
/// <summary>
/// Returns the string presentation of the object
/// </summary>
/// <returns>String presentation of the object</returns>
public override string ToString()
{
StringBuilder sb = new StringBuilder();
sb.Append("class Descendant1 {\n");
sb.Append(" ").Append(base.ToString()?.Replace("\n", "\n ")).Append("\n");
sb.Append(" DescendantName: ").Append(DescendantName).Append("\n");
sb.Append("}\n");
return sb.ToString();
}
}
/// <summary>
/// A Json converter for type <see cref="Descendant1" />
/// </summary>
public class Descendant1JsonConverter : JsonConverter<Descendant1>
{
/// <summary>
/// Deserializes json to <see cref="Descendant1" />
/// </summary>
/// <param name="utf8JsonReader"></param>
/// <param name="typeToConvert"></param>
/// <param name="jsonSerializerOptions"></param>
/// <returns></returns>
/// <exception cref="JsonException"></exception>
public override Descendant1 Read(ref Utf8JsonReader utf8JsonReader, Type typeToConvert, JsonSerializerOptions jsonSerializerOptions)
{
int currentDepth = utf8JsonReader.CurrentDepth;
if (utf8JsonReader.TokenType != JsonTokenType.StartObject && utf8JsonReader.TokenType != JsonTokenType.StartArray)
throw new JsonException();
JsonTokenType startingTokenType = utf8JsonReader.TokenType;
Option<string> alternativeName = default;
Option<string> descendantName = default;
Option<TestDescendantsObjectType?> objectType = default;
while (utf8JsonReader.Read())
{
if (startingTokenType == JsonTokenType.StartObject && utf8JsonReader.TokenType == JsonTokenType.EndObject && currentDepth == utf8JsonReader.CurrentDepth)
break;
if (startingTokenType == JsonTokenType.StartArray && utf8JsonReader.TokenType == JsonTokenType.EndArray && currentDepth == utf8JsonReader.CurrentDepth)
break;
if (utf8JsonReader.TokenType == JsonTokenType.PropertyName && currentDepth == utf8JsonReader.CurrentDepth - 1)
{
string localVarJsonPropertyName = utf8JsonReader.GetString();
utf8JsonReader.Read();
switch (localVarJsonPropertyName)
{
case "alternativeName":
alternativeName = new Option<string>(utf8JsonReader.GetString());
break;
case "descendantName":
descendantName = new Option<string>(utf8JsonReader.GetString());
break;
case "objectType":
string objectTypeRawValue = utf8JsonReader.GetString();
if (objectTypeRawValue != null)
objectType = new Option<TestDescendantsObjectType?>(TestDescendantsObjectTypeValueConverter.FromStringOrDefault(objectTypeRawValue));
break;
default:
break;
}
}
}
if (!alternativeName.IsSet)
throw new ArgumentException("Property is required for class Descendant1.", nameof(alternativeName));
if (!descendantName.IsSet)
throw new ArgumentException("Property is required for class Descendant1.", nameof(descendantName));
if (!objectType.IsSet)
throw new ArgumentException("Property is required for class Descendant1.", nameof(objectType));
if (alternativeName.IsSet && alternativeName.Value == null)
throw new ArgumentNullException(nameof(alternativeName), "Property is not nullable for class Descendant1.");
if (descendantName.IsSet && descendantName.Value == null)
throw new ArgumentNullException(nameof(descendantName), "Property is not nullable for class Descendant1.");
if (objectType.IsSet && objectType.Value == null)
throw new ArgumentNullException(nameof(objectType), "Property is not nullable for class Descendant1.");
return new Descendant1(alternativeName.Value, descendantName.Value);
}
/// <summary>
/// Serializes a <see cref="Descendant1" />
/// </summary>
/// <param name="writer"></param>
/// <param name="descendant1"></param>
/// <param name="jsonSerializerOptions"></param>
/// <exception cref="NotImplementedException"></exception>
public override void Write(Utf8JsonWriter writer, Descendant1 descendant1, JsonSerializerOptions jsonSerializerOptions)
{
writer.WriteStartObject();
WriteProperties(writer, descendant1, jsonSerializerOptions);
writer.WriteEndObject();
}
/// <summary>
/// Serializes the properties of <see cref="Descendant1" />
/// </summary>
/// <param name="writer"></param>
/// <param name="descendant1"></param>
/// <param name="jsonSerializerOptions"></param>
/// <exception cref="NotImplementedException"></exception>
public void WriteProperties(Utf8JsonWriter writer, Descendant1 descendant1, JsonSerializerOptions jsonSerializerOptions)
{
if (descendant1.AlternativeName == null)
throw new ArgumentNullException(nameof(descendant1.AlternativeName), "Property is required for class Descendant1.");
if (descendant1.DescendantName == null)
throw new ArgumentNullException(nameof(descendant1.DescendantName), "Property is required for class Descendant1.");
writer.WriteString("alternativeName", descendant1.AlternativeName);
writer.WriteString("descendantName", descendant1.DescendantName);
writer.WriteString("objectType", TestDescendantsObjectTypeValueConverter.ToJsonValue(descendant1.ObjectType));
}
}
}

View File

@ -0,0 +1,183 @@
// <auto-generated>
/*
* OpenAPI Petstore
*
* This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\
*
* The version of the OpenAPI document: 1.0.0
* Generated by: https://github.com/openapitools/openapi-generator.git
*/
using System;
using System.Collections;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Linq;
using System.IO;
using System.Text;
using System.Text.RegularExpressions;
using System.Text.Json;
using System.Text.Json.Serialization;
using System.ComponentModel.DataAnnotations;
using OpenAPIClientUtils = Org.OpenAPITools.Client.ClientUtils;
using Org.OpenAPITools.Client;
namespace Org.OpenAPITools.Model
{
/// <summary>
/// Descendant2
/// </summary>
public partial class Descendant2 : TestDescendants, IValidatableObject
{
/// <summary>
/// Initializes a new instance of the <see cref="Descendant2" /> class.
/// </summary>
/// <param name="alternativeName">alternativeName</param>
/// <param name="confidentiality">confidentiality</param>
[JsonConstructor]
public Descendant2(string alternativeName, string confidentiality) : base(alternativeName)
{
Confidentiality = confidentiality;
OnCreated();
}
partial void OnCreated();
/// <summary>
/// Gets or Sets Confidentiality
/// </summary>
[JsonPropertyName("confidentiality")]
public string Confidentiality { get; set; }
/// <summary>
/// Returns the string presentation of the object
/// </summary>
/// <returns>String presentation of the object</returns>
public override string ToString()
{
StringBuilder sb = new StringBuilder();
sb.Append("class Descendant2 {\n");
sb.Append(" ").Append(base.ToString()?.Replace("\n", "\n ")).Append("\n");
sb.Append(" Confidentiality: ").Append(Confidentiality).Append("\n");
sb.Append("}\n");
return sb.ToString();
}
}
/// <summary>
/// A Json converter for type <see cref="Descendant2" />
/// </summary>
public class Descendant2JsonConverter : JsonConverter<Descendant2>
{
/// <summary>
/// Deserializes json to <see cref="Descendant2" />
/// </summary>
/// <param name="utf8JsonReader"></param>
/// <param name="typeToConvert"></param>
/// <param name="jsonSerializerOptions"></param>
/// <returns></returns>
/// <exception cref="JsonException"></exception>
public override Descendant2 Read(ref Utf8JsonReader utf8JsonReader, Type typeToConvert, JsonSerializerOptions jsonSerializerOptions)
{
int currentDepth = utf8JsonReader.CurrentDepth;
if (utf8JsonReader.TokenType != JsonTokenType.StartObject && utf8JsonReader.TokenType != JsonTokenType.StartArray)
throw new JsonException();
JsonTokenType startingTokenType = utf8JsonReader.TokenType;
Option<string> alternativeName = default;
Option<string> confidentiality = default;
Option<TestDescendantsObjectType?> objectType = default;
while (utf8JsonReader.Read())
{
if (startingTokenType == JsonTokenType.StartObject && utf8JsonReader.TokenType == JsonTokenType.EndObject && currentDepth == utf8JsonReader.CurrentDepth)
break;
if (startingTokenType == JsonTokenType.StartArray && utf8JsonReader.TokenType == JsonTokenType.EndArray && currentDepth == utf8JsonReader.CurrentDepth)
break;
if (utf8JsonReader.TokenType == JsonTokenType.PropertyName && currentDepth == utf8JsonReader.CurrentDepth - 1)
{
string localVarJsonPropertyName = utf8JsonReader.GetString();
utf8JsonReader.Read();
switch (localVarJsonPropertyName)
{
case "alternativeName":
alternativeName = new Option<string>(utf8JsonReader.GetString());
break;
case "confidentiality":
confidentiality = new Option<string>(utf8JsonReader.GetString());
break;
case "objectType":
string objectTypeRawValue = utf8JsonReader.GetString();
if (objectTypeRawValue != null)
objectType = new Option<TestDescendantsObjectType?>(TestDescendantsObjectTypeValueConverter.FromStringOrDefault(objectTypeRawValue));
break;
default:
break;
}
}
}
if (!alternativeName.IsSet)
throw new ArgumentException("Property is required for class Descendant2.", nameof(alternativeName));
if (!confidentiality.IsSet)
throw new ArgumentException("Property is required for class Descendant2.", nameof(confidentiality));
if (!objectType.IsSet)
throw new ArgumentException("Property is required for class Descendant2.", nameof(objectType));
if (alternativeName.IsSet && alternativeName.Value == null)
throw new ArgumentNullException(nameof(alternativeName), "Property is not nullable for class Descendant2.");
if (confidentiality.IsSet && confidentiality.Value == null)
throw new ArgumentNullException(nameof(confidentiality), "Property is not nullable for class Descendant2.");
if (objectType.IsSet && objectType.Value == null)
throw new ArgumentNullException(nameof(objectType), "Property is not nullable for class Descendant2.");
return new Descendant2(alternativeName.Value, confidentiality.Value);
}
/// <summary>
/// Serializes a <see cref="Descendant2" />
/// </summary>
/// <param name="writer"></param>
/// <param name="descendant2"></param>
/// <param name="jsonSerializerOptions"></param>
/// <exception cref="NotImplementedException"></exception>
public override void Write(Utf8JsonWriter writer, Descendant2 descendant2, JsonSerializerOptions jsonSerializerOptions)
{
writer.WriteStartObject();
WriteProperties(writer, descendant2, jsonSerializerOptions);
writer.WriteEndObject();
}
/// <summary>
/// Serializes the properties of <see cref="Descendant2" />
/// </summary>
/// <param name="writer"></param>
/// <param name="descendant2"></param>
/// <param name="jsonSerializerOptions"></param>
/// <exception cref="NotImplementedException"></exception>
public void WriteProperties(Utf8JsonWriter writer, Descendant2 descendant2, JsonSerializerOptions jsonSerializerOptions)
{
if (descendant2.AlternativeName == null)
throw new ArgumentNullException(nameof(descendant2.AlternativeName), "Property is required for class Descendant2.");
if (descendant2.Confidentiality == null)
throw new ArgumentNullException(nameof(descendant2.Confidentiality), "Property is required for class Descendant2.");
writer.WriteString("alternativeName", descendant2.AlternativeName);
writer.WriteString("confidentiality", descendant2.Confidentiality);
writer.WriteString("objectType", TestDescendantsObjectTypeValueConverter.ToJsonValue(descendant2.ObjectType));
}
}
}

View File

@ -43,13 +43,6 @@ namespace Org.OpenAPITools.Model
partial void OnCreated();
/// <summary>
/// The discriminator
/// </summary>
[JsonIgnore]
[global::System.ComponentModel.EditorBrowsable(global::System.ComponentModel.EditorBrowsableState.Never)]
public new string ClassName { get; } = "Dog";
/// <summary>
/// Used to track the state of Breed
/// </summary>

View File

@ -35,6 +35,7 @@ namespace Org.OpenAPITools.Model
[JsonConstructor]
public EntityBase()
{
Schema = this.GetType().Name;
OnCreated();
}
@ -45,7 +46,7 @@ namespace Org.OpenAPITools.Model
/// </summary>
[JsonIgnore]
[global::System.ComponentModel.EditorBrowsable(global::System.ComponentModel.EditorBrowsableState.Never)]
public string Schema { get; } = "EntityBase";
public string Schema { get; }
/// <summary>
/// Gets or Sets additional properties

View File

@ -35,6 +35,7 @@ namespace Org.OpenAPITools.Model
[JsonConstructor]
public GrandparentAnimal()
{
PetType = this.GetType().Name;
OnCreated();
}
@ -45,7 +46,7 @@ namespace Org.OpenAPITools.Model
/// </summary>
[JsonIgnore]
[global::System.ComponentModel.EditorBrowsable(global::System.ComponentModel.EditorBrowsableState.Never)]
public string PetType { get; } = "GrandparentAnimal";
public string PetType { get; }
/// <summary>
/// Gets or Sets additional properties

View File

@ -40,13 +40,6 @@ namespace Org.OpenAPITools.Model
partial void OnCreated();
/// <summary>
/// The discriminator
/// </summary>
[JsonIgnore]
[global::System.ComponentModel.EditorBrowsable(global::System.ComponentModel.EditorBrowsableState.Never)]
public new string PetType { get; } = "ParentPet";
/// <summary>
/// Returns the string presentation of the object
/// </summary>

View File

@ -0,0 +1,219 @@
// <auto-generated>
/*
* OpenAPI Petstore
*
* This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\
*
* The version of the OpenAPI document: 1.0.0
* Generated by: https://github.com/openapitools/openapi-generator.git
*/
using System;
using System.Collections;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Linq;
using System.IO;
using System.Text;
using System.Text.RegularExpressions;
using System.Text.Json;
using System.Text.Json.Serialization;
using System.ComponentModel.DataAnnotations;
using OpenAPIClientUtils = Org.OpenAPITools.Client.ClientUtils;
using Org.OpenAPITools.Client;
namespace Org.OpenAPITools.Model
{
/// <summary>
/// TestDescendants
/// </summary>
public partial class TestDescendants : IValidatableObject
{
/// <summary>
/// Initializes a new instance of the <see cref="TestDescendants" /> class.
/// </summary>
/// <param name="alternativeName">alternativeName</param>
[JsonConstructor]
public TestDescendants(string alternativeName)
{
AlternativeName = alternativeName;
ObjectType = (TestDescendantsObjectType)Enum.Parse(typeof(TestDescendantsObjectType), this.GetType().Name);
OnCreated();
}
partial void OnCreated();
/// <summary>
/// Gets or Sets AlternativeName
/// </summary>
[JsonPropertyName("alternativeName")]
public string AlternativeName { get; set; }
/// <summary>
/// The discriminator
/// </summary>
[JsonIgnore]
[global::System.ComponentModel.EditorBrowsable(global::System.ComponentModel.EditorBrowsableState.Never)]
public TestDescendantsObjectType ObjectType { get; }
/// <summary>
/// Gets or Sets additional properties
/// </summary>
[JsonExtensionData]
public Dictionary<string, JsonElement> AdditionalProperties { get; } = new Dictionary<string, JsonElement>();
/// <summary>
/// Returns the string presentation of the object
/// </summary>
/// <returns>String presentation of the object</returns>
public override string ToString()
{
StringBuilder sb = new StringBuilder();
sb.Append("class TestDescendants {\n");
sb.Append(" AlternativeName: ").Append(AlternativeName).Append("\n");
sb.Append(" AdditionalProperties: ").Append(AdditionalProperties).Append("\n");
sb.Append("}\n");
return sb.ToString();
}
/// <summary>
/// To validate all properties of the instance
/// </summary>
/// <param name="validationContext">Validation context</param>
/// <returns>Validation Result</returns>
IEnumerable<ValidationResult> IValidatableObject.Validate(ValidationContext validationContext)
{
return this.BaseValidate(validationContext);
}
/// <summary>
/// To validate all properties of the instance
/// </summary>
/// <param name="validationContext">Validation context</param>
/// <returns>Validation Result</returns>
protected IEnumerable<ValidationResult> BaseValidate(ValidationContext validationContext)
{
yield break;
}
}
/// <summary>
/// A Json converter for type <see cref="TestDescendants" />
/// </summary>
public class TestDescendantsJsonConverter : JsonConverter<TestDescendants>
{
/// <summary>
/// Deserializes json to <see cref="TestDescendants" />
/// </summary>
/// <param name="utf8JsonReader"></param>
/// <param name="typeToConvert"></param>
/// <param name="jsonSerializerOptions"></param>
/// <returns></returns>
/// <exception cref="JsonException"></exception>
public override TestDescendants Read(ref Utf8JsonReader utf8JsonReader, Type typeToConvert, JsonSerializerOptions jsonSerializerOptions)
{
int currentDepth = utf8JsonReader.CurrentDepth;
if (utf8JsonReader.TokenType != JsonTokenType.StartObject && utf8JsonReader.TokenType != JsonTokenType.StartArray)
throw new JsonException();
JsonTokenType startingTokenType = utf8JsonReader.TokenType;
Option<string> alternativeName = default;
Option<TestDescendantsObjectType?> objectType = default;
string discriminator = ClientUtils.GetDiscriminator(utf8JsonReader, "objectType");
if (discriminator != null && discriminator.Equals("Descendant1"))
return JsonSerializer.Deserialize<Descendant1>(ref utf8JsonReader, jsonSerializerOptions) ?? throw new JsonException("The result was an unexpected value.");
if (discriminator != null && discriminator.Equals("Descendant2"))
return JsonSerializer.Deserialize<Descendant2>(ref utf8JsonReader, jsonSerializerOptions) ?? throw new JsonException("The result was an unexpected value.");
while (utf8JsonReader.Read())
{
if (startingTokenType == JsonTokenType.StartObject && utf8JsonReader.TokenType == JsonTokenType.EndObject && currentDepth == utf8JsonReader.CurrentDepth)
break;
if (startingTokenType == JsonTokenType.StartArray && utf8JsonReader.TokenType == JsonTokenType.EndArray && currentDepth == utf8JsonReader.CurrentDepth)
break;
if (utf8JsonReader.TokenType == JsonTokenType.PropertyName && currentDepth == utf8JsonReader.CurrentDepth - 1)
{
string localVarJsonPropertyName = utf8JsonReader.GetString();
utf8JsonReader.Read();
switch (localVarJsonPropertyName)
{
case "alternativeName":
alternativeName = new Option<string>(utf8JsonReader.GetString());
break;
case "objectType":
string objectTypeRawValue = utf8JsonReader.GetString();
if (objectTypeRawValue != null)
objectType = new Option<TestDescendantsObjectType?>(TestDescendantsObjectTypeValueConverter.FromStringOrDefault(objectTypeRawValue));
break;
default:
break;
}
}
}
if (!alternativeName.IsSet)
throw new ArgumentException("Property is required for class TestDescendants.", nameof(alternativeName));
if (!objectType.IsSet)
throw new ArgumentException("Property is required for class TestDescendants.", nameof(objectType));
if (alternativeName.IsSet && alternativeName.Value == null)
throw new ArgumentNullException(nameof(alternativeName), "Property is not nullable for class TestDescendants.");
if (objectType.IsSet && objectType.Value == null)
throw new ArgumentNullException(nameof(objectType), "Property is not nullable for class TestDescendants.");
return new TestDescendants(alternativeName.Value);
}
/// <summary>
/// Serializes a <see cref="TestDescendants" />
/// </summary>
/// <param name="writer"></param>
/// <param name="testDescendants"></param>
/// <param name="jsonSerializerOptions"></param>
/// <exception cref="NotImplementedException"></exception>
public override void Write(Utf8JsonWriter writer, TestDescendants testDescendants, JsonSerializerOptions jsonSerializerOptions)
{
if (testDescendants is Descendant1 descendant1){
JsonSerializer.Serialize<Descendant1>(writer, descendant1, jsonSerializerOptions);
return;
}
if (testDescendants is Descendant2 descendant2){
JsonSerializer.Serialize<Descendant2>(writer, descendant2, jsonSerializerOptions);
return;
}
writer.WriteStartObject();
WriteProperties(writer, testDescendants, jsonSerializerOptions);
writer.WriteEndObject();
}
/// <summary>
/// Serializes the properties of <see cref="TestDescendants" />
/// </summary>
/// <param name="writer"></param>
/// <param name="testDescendants"></param>
/// <param name="jsonSerializerOptions"></param>
/// <exception cref="NotImplementedException"></exception>
public void WriteProperties(Utf8JsonWriter writer, TestDescendants testDescendants, JsonSerializerOptions jsonSerializerOptions)
{
if (testDescendants.AlternativeName == null)
throw new ArgumentNullException(nameof(testDescendants.AlternativeName), "Property is required for class TestDescendants.");
writer.WriteString("alternativeName", testDescendants.AlternativeName);
writer.WriteString("objectType", TestDescendantsObjectTypeValueConverter.ToJsonValue(testDescendants.ObjectType));
}
}
}

View File

@ -0,0 +1,174 @@
// <auto-generated>
/*
* OpenAPI Petstore
*
* This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\
*
* The version of the OpenAPI document: 1.0.0
* Generated by: https://github.com/openapitools/openapi-generator.git
*/
using System;
using System.Collections;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Linq;
using System.IO;
using System.Text;
using System.Text.RegularExpressions;
using System.Text.Json;
using System.Text.Json.Serialization;
using System.ComponentModel.DataAnnotations;
using OpenAPIClientUtils = Org.OpenAPITools.Client.ClientUtils;
using Org.OpenAPITools.Client;
namespace Org.OpenAPITools.Model
{
/// <summary>
/// Defines TestDescendants_objectType
/// </summary>
public enum TestDescendantsObjectType
{
/// <summary>
/// Enum Descendant1 for value: Descendant1
/// </summary>
Descendant1 = 1,
/// <summary>
/// Enum Descendant2 for value: Descendant2
/// </summary>
Descendant2 = 2
}
/// <summary>
/// Converts <see cref="TestDescendantsObjectType"/> to and from the JSON value
/// </summary>
public static class TestDescendantsObjectTypeValueConverter
{
/// <summary>
/// Parses a given value to <see cref="TestDescendantsObjectType"/>
/// </summary>
/// <param name="value"></param>
/// <returns></returns>
public static TestDescendantsObjectType FromString(string value)
{
if (value.Equals("Descendant1"))
return TestDescendantsObjectType.Descendant1;
if (value.Equals("Descendant2"))
return TestDescendantsObjectType.Descendant2;
throw new NotImplementedException($"Could not convert value to type TestDescendantsObjectType: '{value}'");
}
/// <summary>
/// Parses a given value to <see cref="TestDescendantsObjectType"/>
/// </summary>
/// <param name="value"></param>
/// <returns></returns>
public static TestDescendantsObjectType? FromStringOrDefault(string value)
{
if (value.Equals("Descendant1"))
return TestDescendantsObjectType.Descendant1;
if (value.Equals("Descendant2"))
return TestDescendantsObjectType.Descendant2;
return null;
}
/// <summary>
/// Converts the <see cref="TestDescendantsObjectType"/> to the json value
/// </summary>
/// <param name="value"></param>
/// <returns></returns>
/// <exception cref="NotImplementedException"></exception>
public static string ToJsonValue(TestDescendantsObjectType value)
{
if (value == TestDescendantsObjectType.Descendant1)
return "Descendant1";
if (value == TestDescendantsObjectType.Descendant2)
return "Descendant2";
throw new NotImplementedException($"Value could not be handled: '{value}'");
}
}
/// <summary>
/// A Json converter for type <see cref="TestDescendantsObjectType"/>
/// </summary>
/// <exception cref="NotImplementedException"></exception>
public class TestDescendantsObjectTypeJsonConverter : JsonConverter<TestDescendantsObjectType>
{
/// <summary>
/// Returns a from the Json object
/// </summary>
/// <param name="reader"></param>
/// <param name="typeToConvert"></param>
/// <param name="options"></param>
/// <returns></returns>
public override TestDescendantsObjectType Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
{
string rawValue = reader.GetString();
TestDescendantsObjectType? result = rawValue == null
? null
: TestDescendantsObjectTypeValueConverter.FromStringOrDefault(rawValue);
if (result != null)
return result.Value;
throw new JsonException();
}
/// <summary>
/// Writes the TestDescendantsObjectType to the json writer
/// </summary>
/// <param name="writer"></param>
/// <param name="testDescendantsObjectType"></param>
/// <param name="options"></param>
public override void Write(Utf8JsonWriter writer, TestDescendantsObjectType testDescendantsObjectType, JsonSerializerOptions options)
{
writer.WriteStringValue(testDescendantsObjectType.ToString());
}
}
/// <summary>
/// A Json converter for type <see cref="TestDescendantsObjectType"/>
/// </summary>
public class TestDescendantsObjectTypeNullableJsonConverter : JsonConverter<TestDescendantsObjectType?>
{
/// <summary>
/// Returns a TestDescendantsObjectType from the Json object
/// </summary>
/// <param name="reader"></param>
/// <param name="typeToConvert"></param>
/// <param name="options"></param>
/// <returns></returns>
public override TestDescendantsObjectType? Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
{
string rawValue = reader.GetString();
TestDescendantsObjectType? result = rawValue == null
? null
: TestDescendantsObjectTypeValueConverter.FromStringOrDefault(rawValue);
if (result != null)
return result.Value;
throw new JsonException();
}
/// <summary>
/// Writes the DateTime to the json writer
/// </summary>
/// <param name="writer"></param>
/// <param name="testDescendantsObjectType"></param>
/// <param name="options"></param>
public override void Write(Utf8JsonWriter writer, TestDescendantsObjectType? testDescendantsObjectType, JsonSerializerOptions options)
{
writer.WriteStringValue(testDescendantsObjectType?.ToString() ?? "null");
}
}
}

View File

@ -33,6 +33,8 @@ docs/models/CopyActivity.md
docs/models/DanishPig.md
docs/models/DateOnlyClass.md
docs/models/DeprecatedObject.md
docs/models/Descendant1.md
docs/models/Descendant2.md
docs/models/Dog.md
docs/models/Drawing.md
docs/models/EntityBase.md
@ -100,6 +102,7 @@ docs/models/SpecialModelName.md
docs/models/Tag.md
docs/models/TestCollectionEndingWithWordList.md
docs/models/TestCollectionEndingWithWordListObject.md
docs/models/TestDescendants.md
docs/models/TestInlineFreeformAdditionalPropertiesRequest.md
docs/models/TestResult.md
docs/models/TestResultCode.md
@ -171,6 +174,8 @@ src/Org.OpenAPITools/Model/CopyActivity.cs
src/Org.OpenAPITools/Model/DanishPig.cs
src/Org.OpenAPITools/Model/DateOnlyClass.cs
src/Org.OpenAPITools/Model/DeprecatedObject.cs
src/Org.OpenAPITools/Model/Descendant1.cs
src/Org.OpenAPITools/Model/Descendant2.cs
src/Org.OpenAPITools/Model/Dog.cs
src/Org.OpenAPITools/Model/Drawing.cs
src/Org.OpenAPITools/Model/EntityBase.cs
@ -238,6 +243,7 @@ src/Org.OpenAPITools/Model/SpecialModelName.cs
src/Org.OpenAPITools/Model/Tag.cs
src/Org.OpenAPITools/Model/TestCollectionEndingWithWordList.cs
src/Org.OpenAPITools/Model/TestCollectionEndingWithWordListObject.cs
src/Org.OpenAPITools/Model/TestDescendants.cs
src/Org.OpenAPITools/Model/TestInlineFreeformAdditionalPropertiesRequest.cs
src/Org.OpenAPITools/Model/TestResult.cs
src/Org.OpenAPITools/Model/TestResultCode.cs

View File

@ -2770,6 +2770,40 @@ components:
properties:
id:
type: string
Descendant1:
allOf:
- $ref: '#/components/schemas/TestDescendants'
- properties:
descendantName:
type: string
required:
- descendantName
type: object
Descendant2:
allOf:
- $ref: '#/components/schemas/TestDescendants'
- properties:
confidentiality:
type: string
required:
- confidentiality
type: object
TestDescendants:
description: ""
discriminator:
propertyName: objectType
properties:
alternativeName:
type: string
objectType:
enum:
- Descendant1
- Descendant2
type: string
required:
- alternativeName
- objectType
type: object
CopyActivity:
allOf:
- $ref: '#/components/schemas/EntityBase'

View File

@ -0,0 +1,12 @@
# Org.OpenAPITools.Model.Descendant1
## Properties
Name | Type | Description | Notes
------------ | ------------- | ------------- | -------------
**AlternativeName** | **string** | |
**ObjectType** | **string** | |
**DescendantName** | **string** | |
[[Back to Model list]](../../README.md#documentation-for-models) [[Back to API list]](../../README.md#documentation-for-api-endpoints) [[Back to README]](../../README.md)

View File

@ -0,0 +1,12 @@
# Org.OpenAPITools.Model.Descendant2
## Properties
Name | Type | Description | Notes
------------ | ------------- | ------------- | -------------
**AlternativeName** | **string** | |
**ObjectType** | **string** | |
**Confidentiality** | **string** | |
[[Back to Model list]](../../README.md#documentation-for-models) [[Back to API list]](../../README.md#documentation-for-api-endpoints) [[Back to README]](../../README.md)

View File

@ -0,0 +1,11 @@
# Org.OpenAPITools.Model.TestDescendants
## Properties
Name | Type | Description | Notes
------------ | ------------- | ------------- | -------------
**AlternativeName** | **string** | |
**ObjectType** | **string** | |
[[Back to Model list]](../../README.md#documentation-for-models) [[Back to API list]](../../README.md#documentation-for-api-endpoints) [[Back to README]](../../README.md)

View File

@ -0,0 +1,65 @@
/*
* OpenAPI Petstore
*
* This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\
*
* The version of the OpenAPI document: 1.0.0
* Generated by: https://github.com/openapitools/openapi-generator.git
*/
using Xunit;
using System;
using System.Linq;
using System.IO;
using System.Collections.Generic;
using Org.OpenAPITools.Model;
using Org.OpenAPITools.Client;
using System.Reflection;
namespace Org.OpenAPITools.Test.Model
{
/// <summary>
/// Class for testing Descendant1
/// </summary>
/// <remarks>
/// This file is automatically generated by OpenAPI Generator (https://openapi-generator.tech).
/// Please update the test case below to test the model.
/// </remarks>
public class Descendant1Tests : IDisposable
{
// TODO uncomment below to declare an instance variable for Descendant1
//private Descendant1 instance;
public Descendant1Tests()
{
// TODO uncomment below to create an instance of Descendant1
//instance = new Descendant1();
}
public void Dispose()
{
// Cleanup when everything is done.
}
/// <summary>
/// Test an instance of Descendant1
/// </summary>
[Fact]
public void Descendant1InstanceTest()
{
// TODO uncomment below to test "IsType" Descendant1
//Assert.IsType<Descendant1>(instance);
}
/// <summary>
/// Test the property 'DescendantName'
/// </summary>
[Fact]
public void DescendantNameTest()
{
// TODO unit test for the property 'DescendantName'
}
}
}

View File

@ -0,0 +1,65 @@
/*
* OpenAPI Petstore
*
* This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\
*
* The version of the OpenAPI document: 1.0.0
* Generated by: https://github.com/openapitools/openapi-generator.git
*/
using Xunit;
using System;
using System.Linq;
using System.IO;
using System.Collections.Generic;
using Org.OpenAPITools.Model;
using Org.OpenAPITools.Client;
using System.Reflection;
namespace Org.OpenAPITools.Test.Model
{
/// <summary>
/// Class for testing Descendant2
/// </summary>
/// <remarks>
/// This file is automatically generated by OpenAPI Generator (https://openapi-generator.tech).
/// Please update the test case below to test the model.
/// </remarks>
public class Descendant2Tests : IDisposable
{
// TODO uncomment below to declare an instance variable for Descendant2
//private Descendant2 instance;
public Descendant2Tests()
{
// TODO uncomment below to create an instance of Descendant2
//instance = new Descendant2();
}
public void Dispose()
{
// Cleanup when everything is done.
}
/// <summary>
/// Test an instance of Descendant2
/// </summary>
[Fact]
public void Descendant2InstanceTest()
{
// TODO uncomment below to test "IsType" Descendant2
//Assert.IsType<Descendant2>(instance);
}
/// <summary>
/// Test the property 'Confidentiality'
/// </summary>
[Fact]
public void ConfidentialityTest()
{
// TODO unit test for the property 'Confidentiality'
}
}
}

View File

@ -0,0 +1,94 @@
/*
* OpenAPI Petstore
*
* This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\
*
* The version of the OpenAPI document: 1.0.0
* Generated by: https://github.com/openapitools/openapi-generator.git
*/
using Xunit;
using System;
using System.Linq;
using System.IO;
using System.Collections.Generic;
using Org.OpenAPITools.Model;
using Org.OpenAPITools.Client;
using System.Reflection;
namespace Org.OpenAPITools.Test.Model
{
/// <summary>
/// Class for testing TestDescendants
/// </summary>
/// <remarks>
/// This file is automatically generated by OpenAPI Generator (https://openapi-generator.tech).
/// Please update the test case below to test the model.
/// </remarks>
public class TestDescendantsTests : IDisposable
{
// TODO uncomment below to declare an instance variable for TestDescendants
//private TestDescendants instance;
public TestDescendantsTests()
{
// TODO uncomment below to create an instance of TestDescendants
//instance = new TestDescendants();
}
public void Dispose()
{
// Cleanup when everything is done.
}
/// <summary>
/// Test an instance of TestDescendants
/// </summary>
[Fact]
public void TestDescendantsInstanceTest()
{
// TODO uncomment below to test "IsType" TestDescendants
//Assert.IsType<TestDescendants>(instance);
}
/// <summary>
/// Test deserialize a Descendant1 from type TestDescendants
/// </summary>
[Fact]
public void Descendant1DeserializeFromTestDescendantsTest()
{
// TODO uncomment below to test deserialize a Descendant1 from type TestDescendants
//Assert.IsType<TestDescendants>(JsonConvert.DeserializeObject<TestDescendants>(new Descendant1().ToJson()));
}
/// <summary>
/// Test deserialize a Descendant2 from type TestDescendants
/// </summary>
[Fact]
public void Descendant2DeserializeFromTestDescendantsTest()
{
// TODO uncomment below to test deserialize a Descendant2 from type TestDescendants
//Assert.IsType<TestDescendants>(JsonConvert.DeserializeObject<TestDescendants>(new Descendant2().ToJson()));
}
/// <summary>
/// Test the property 'AlternativeName'
/// </summary>
[Fact]
public void AlternativeNameTest()
{
// TODO unit test for the property 'AlternativeName'
}
/// <summary>
/// Test the property 'ObjectType'
/// </summary>
[Fact]
public void ObjectTypeTest()
{
// TODO unit test for the property 'ObjectType'
}
}
}

View File

@ -227,6 +227,8 @@ namespace Org.OpenAPITools.Client
return RequiredClass.RequiredNullableEnumIntegerOnlyEnumToJsonValue(requiredClassRequiredNullableEnumIntegerOnlyEnum).ToString();
if (obj is RequiredClass.RequiredNullableEnumStringEnum requiredClassRequiredNullableEnumStringEnum)
return RequiredClass.RequiredNullableEnumStringEnumToJsonValue(requiredClassRequiredNullableEnumStringEnum);
if (obj is TestDescendants.ObjectTypeEnum testDescendantsObjectTypeEnum)
return TestDescendants.ObjectTypeEnumToJsonValue(testDescendantsObjectTypeEnum);
if (obj is TestResultCode testResultCode)
return TestResultCodeValueConverter.ToJsonValue(testResultCode);
if (obj is Zebra.TypeEnum zebraTypeEnum)

View File

@ -62,6 +62,8 @@ namespace Org.OpenAPITools.Client
_jsonOptions.Converters.Add(new DanishPigJsonConverter());
_jsonOptions.Converters.Add(new DateOnlyClassJsonConverter());
_jsonOptions.Converters.Add(new DeprecatedObjectJsonConverter());
_jsonOptions.Converters.Add(new Descendant1JsonConverter());
_jsonOptions.Converters.Add(new Descendant2JsonConverter());
_jsonOptions.Converters.Add(new DogJsonConverter());
_jsonOptions.Converters.Add(new DrawingJsonConverter());
_jsonOptions.Converters.Add(new EntityBaseJsonConverter());
@ -135,6 +137,7 @@ namespace Org.OpenAPITools.Client
_jsonOptions.Converters.Add(new TagJsonConverter());
_jsonOptions.Converters.Add(new TestCollectionEndingWithWordListJsonConverter());
_jsonOptions.Converters.Add(new TestCollectionEndingWithWordListObjectJsonConverter());
_jsonOptions.Converters.Add(new TestDescendantsJsonConverter());
_jsonOptions.Converters.Add(new TestInlineFreeformAdditionalPropertiesRequestJsonConverter());
_jsonOptions.Converters.Add(new TestResultJsonConverter());
_jsonOptions.Converters.Add(new TestResultCodeJsonConverter());

View File

@ -36,6 +36,7 @@ namespace Org.OpenAPITools.Model
[JsonConstructor]
public Animal(Option<string> color = default)
{
ClassName = this.GetType().Name;
ColorOption = color;
OnCreated();
}
@ -47,7 +48,7 @@ namespace Org.OpenAPITools.Model
/// </summary>
[JsonIgnore]
[global::System.ComponentModel.EditorBrowsable(global::System.ComponentModel.EditorBrowsableState.Never)]
public string ClassName { get; } = "Animal";
public string ClassName { get; }
/// <summary>
/// Used to track the state of Color

View File

@ -43,13 +43,6 @@ namespace Org.OpenAPITools.Model
partial void OnCreated();
/// <summary>
/// The discriminator
/// </summary>
[JsonIgnore]
[global::System.ComponentModel.EditorBrowsable(global::System.ComponentModel.EditorBrowsableState.Never)]
public new string ClassName { get; } = "Cat";
/// <summary>
/// Used to track the state of Declawed
/// </summary>

View File

@ -37,6 +37,7 @@ namespace Org.OpenAPITools.Model
public ChildCat(Option<string> name = default) : base()
{
NameOption = name;
PetType = (PetTypeEnum)Enum.Parse(typeof(PetTypeEnum), this.GetType().Name);
OnCreated();
}
@ -112,7 +113,7 @@ namespace Org.OpenAPITools.Model
/// </summary>
[JsonIgnore]
[global::System.ComponentModel.EditorBrowsable(global::System.ComponentModel.EditorBrowsableState.Never)]
public new PetTypeEnum PetType { get; } = (PetTypeEnum)Enum.Parse(typeof(PetTypeEnum), "ChildCat");
public new PetTypeEnum PetType { get; }
/// <summary>
/// Returns the string presentation of the object

View File

@ -36,6 +36,7 @@ namespace Org.OpenAPITools.Model
[JsonConstructor]
public CopyActivity(string copyActivitytt) : base()
{
Schema = (SchemaEnum)Enum.Parse(typeof(SchemaEnum), this.GetType().Name);
CopyActivitytt = copyActivitytt;
OnCreated();
}
@ -99,7 +100,7 @@ namespace Org.OpenAPITools.Model
/// </summary>
[JsonIgnore]
[global::System.ComponentModel.EditorBrowsable(global::System.ComponentModel.EditorBrowsableState.Never)]
public new SchemaEnum Schema { get; } = (SchemaEnum)Enum.Parse(typeof(SchemaEnum), "CopyActivity");
public new SchemaEnum Schema { get; }
/// <summary>
/// Gets or Sets CopyActivitytt

View File

@ -0,0 +1,183 @@
// <auto-generated>
/*
* OpenAPI Petstore
*
* This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\
*
* The version of the OpenAPI document: 1.0.0
* Generated by: https://github.com/openapitools/openapi-generator.git
*/
using System;
using System.Collections;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Linq;
using System.IO;
using System.Text;
using System.Text.RegularExpressions;
using System.Text.Json;
using System.Text.Json.Serialization;
using System.ComponentModel.DataAnnotations;
using OpenAPIClientUtils = Org.OpenAPITools.Client.ClientUtils;
using Org.OpenAPITools.Client;
namespace Org.OpenAPITools.Model
{
/// <summary>
/// Descendant1
/// </summary>
public partial class Descendant1 : TestDescendants, IValidatableObject
{
/// <summary>
/// Initializes a new instance of the <see cref="Descendant1" /> class.
/// </summary>
/// <param name="alternativeName">alternativeName</param>
/// <param name="descendantName">descendantName</param>
[JsonConstructor]
public Descendant1(string alternativeName, string descendantName) : base(alternativeName)
{
DescendantName = descendantName;
OnCreated();
}
partial void OnCreated();
/// <summary>
/// Gets or Sets DescendantName
/// </summary>
[JsonPropertyName("descendantName")]
public string DescendantName { get; set; }
/// <summary>
/// Returns the string presentation of the object
/// </summary>
/// <returns>String presentation of the object</returns>
public override string ToString()
{
StringBuilder sb = new StringBuilder();
sb.Append("class Descendant1 {\n");
sb.Append(" ").Append(base.ToString()?.Replace("\n", "\n ")).Append("\n");
sb.Append(" DescendantName: ").Append(DescendantName).Append("\n");
sb.Append("}\n");
return sb.ToString();
}
}
/// <summary>
/// A Json converter for type <see cref="Descendant1" />
/// </summary>
public class Descendant1JsonConverter : JsonConverter<Descendant1>
{
/// <summary>
/// Deserializes json to <see cref="Descendant1" />
/// </summary>
/// <param name="utf8JsonReader"></param>
/// <param name="typeToConvert"></param>
/// <param name="jsonSerializerOptions"></param>
/// <returns></returns>
/// <exception cref="JsonException"></exception>
public override Descendant1 Read(ref Utf8JsonReader utf8JsonReader, Type typeToConvert, JsonSerializerOptions jsonSerializerOptions)
{
int currentDepth = utf8JsonReader.CurrentDepth;
if (utf8JsonReader.TokenType != JsonTokenType.StartObject && utf8JsonReader.TokenType != JsonTokenType.StartArray)
throw new JsonException();
JsonTokenType startingTokenType = utf8JsonReader.TokenType;
Option<string> alternativeName = default;
Option<string> descendantName = default;
Option<Descendant1.ObjectTypeEnum?> objectType = default;
while (utf8JsonReader.Read())
{
if (startingTokenType == JsonTokenType.StartObject && utf8JsonReader.TokenType == JsonTokenType.EndObject && currentDepth == utf8JsonReader.CurrentDepth)
break;
if (startingTokenType == JsonTokenType.StartArray && utf8JsonReader.TokenType == JsonTokenType.EndArray && currentDepth == utf8JsonReader.CurrentDepth)
break;
if (utf8JsonReader.TokenType == JsonTokenType.PropertyName && currentDepth == utf8JsonReader.CurrentDepth - 1)
{
string localVarJsonPropertyName = utf8JsonReader.GetString();
utf8JsonReader.Read();
switch (localVarJsonPropertyName)
{
case "alternativeName":
alternativeName = new Option<string>(utf8JsonReader.GetString());
break;
case "descendantName":
descendantName = new Option<string>(utf8JsonReader.GetString());
break;
case "objectType":
string objectTypeRawValue = utf8JsonReader.GetString();
if (objectTypeRawValue != null)
objectType = new Option<Descendant1.ObjectTypeEnum?>(Descendant1.ObjectTypeEnumFromStringOrDefault(objectTypeRawValue));
break;
default:
break;
}
}
}
if (!alternativeName.IsSet)
throw new ArgumentException("Property is required for class Descendant1.", nameof(alternativeName));
if (!descendantName.IsSet)
throw new ArgumentException("Property is required for class Descendant1.", nameof(descendantName));
if (!objectType.IsSet)
throw new ArgumentException("Property is required for class Descendant1.", nameof(objectType));
if (alternativeName.IsSet && alternativeName.Value == null)
throw new ArgumentNullException(nameof(alternativeName), "Property is not nullable for class Descendant1.");
if (descendantName.IsSet && descendantName.Value == null)
throw new ArgumentNullException(nameof(descendantName), "Property is not nullable for class Descendant1.");
if (objectType.IsSet && objectType.Value == null)
throw new ArgumentNullException(nameof(objectType), "Property is not nullable for class Descendant1.");
return new Descendant1(alternativeName.Value, descendantName.Value);
}
/// <summary>
/// Serializes a <see cref="Descendant1" />
/// </summary>
/// <param name="writer"></param>
/// <param name="descendant1"></param>
/// <param name="jsonSerializerOptions"></param>
/// <exception cref="NotImplementedException"></exception>
public override void Write(Utf8JsonWriter writer, Descendant1 descendant1, JsonSerializerOptions jsonSerializerOptions)
{
writer.WriteStartObject();
WriteProperties(writer, descendant1, jsonSerializerOptions);
writer.WriteEndObject();
}
/// <summary>
/// Serializes the properties of <see cref="Descendant1" />
/// </summary>
/// <param name="writer"></param>
/// <param name="descendant1"></param>
/// <param name="jsonSerializerOptions"></param>
/// <exception cref="NotImplementedException"></exception>
public void WriteProperties(Utf8JsonWriter writer, Descendant1 descendant1, JsonSerializerOptions jsonSerializerOptions)
{
if (descendant1.AlternativeName == null)
throw new ArgumentNullException(nameof(descendant1.AlternativeName), "Property is required for class Descendant1.");
if (descendant1.DescendantName == null)
throw new ArgumentNullException(nameof(descendant1.DescendantName), "Property is required for class Descendant1.");
writer.WriteString("alternativeName", descendant1.AlternativeName);
writer.WriteString("descendantName", descendant1.DescendantName);
writer.WriteString("objectType", Descendant1.ObjectTypeEnumToJsonValue(descendant1.ObjectType));
}
}
}

View File

@ -0,0 +1,183 @@
// <auto-generated>
/*
* OpenAPI Petstore
*
* This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\
*
* The version of the OpenAPI document: 1.0.0
* Generated by: https://github.com/openapitools/openapi-generator.git
*/
using System;
using System.Collections;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Linq;
using System.IO;
using System.Text;
using System.Text.RegularExpressions;
using System.Text.Json;
using System.Text.Json.Serialization;
using System.ComponentModel.DataAnnotations;
using OpenAPIClientUtils = Org.OpenAPITools.Client.ClientUtils;
using Org.OpenAPITools.Client;
namespace Org.OpenAPITools.Model
{
/// <summary>
/// Descendant2
/// </summary>
public partial class Descendant2 : TestDescendants, IValidatableObject
{
/// <summary>
/// Initializes a new instance of the <see cref="Descendant2" /> class.
/// </summary>
/// <param name="alternativeName">alternativeName</param>
/// <param name="confidentiality">confidentiality</param>
[JsonConstructor]
public Descendant2(string alternativeName, string confidentiality) : base(alternativeName)
{
Confidentiality = confidentiality;
OnCreated();
}
partial void OnCreated();
/// <summary>
/// Gets or Sets Confidentiality
/// </summary>
[JsonPropertyName("confidentiality")]
public string Confidentiality { get; set; }
/// <summary>
/// Returns the string presentation of the object
/// </summary>
/// <returns>String presentation of the object</returns>
public override string ToString()
{
StringBuilder sb = new StringBuilder();
sb.Append("class Descendant2 {\n");
sb.Append(" ").Append(base.ToString()?.Replace("\n", "\n ")).Append("\n");
sb.Append(" Confidentiality: ").Append(Confidentiality).Append("\n");
sb.Append("}\n");
return sb.ToString();
}
}
/// <summary>
/// A Json converter for type <see cref="Descendant2" />
/// </summary>
public class Descendant2JsonConverter : JsonConverter<Descendant2>
{
/// <summary>
/// Deserializes json to <see cref="Descendant2" />
/// </summary>
/// <param name="utf8JsonReader"></param>
/// <param name="typeToConvert"></param>
/// <param name="jsonSerializerOptions"></param>
/// <returns></returns>
/// <exception cref="JsonException"></exception>
public override Descendant2 Read(ref Utf8JsonReader utf8JsonReader, Type typeToConvert, JsonSerializerOptions jsonSerializerOptions)
{
int currentDepth = utf8JsonReader.CurrentDepth;
if (utf8JsonReader.TokenType != JsonTokenType.StartObject && utf8JsonReader.TokenType != JsonTokenType.StartArray)
throw new JsonException();
JsonTokenType startingTokenType = utf8JsonReader.TokenType;
Option<string> alternativeName = default;
Option<string> confidentiality = default;
Option<Descendant2.ObjectTypeEnum?> objectType = default;
while (utf8JsonReader.Read())
{
if (startingTokenType == JsonTokenType.StartObject && utf8JsonReader.TokenType == JsonTokenType.EndObject && currentDepth == utf8JsonReader.CurrentDepth)
break;
if (startingTokenType == JsonTokenType.StartArray && utf8JsonReader.TokenType == JsonTokenType.EndArray && currentDepth == utf8JsonReader.CurrentDepth)
break;
if (utf8JsonReader.TokenType == JsonTokenType.PropertyName && currentDepth == utf8JsonReader.CurrentDepth - 1)
{
string localVarJsonPropertyName = utf8JsonReader.GetString();
utf8JsonReader.Read();
switch (localVarJsonPropertyName)
{
case "alternativeName":
alternativeName = new Option<string>(utf8JsonReader.GetString());
break;
case "confidentiality":
confidentiality = new Option<string>(utf8JsonReader.GetString());
break;
case "objectType":
string objectTypeRawValue = utf8JsonReader.GetString();
if (objectTypeRawValue != null)
objectType = new Option<Descendant2.ObjectTypeEnum?>(Descendant2.ObjectTypeEnumFromStringOrDefault(objectTypeRawValue));
break;
default:
break;
}
}
}
if (!alternativeName.IsSet)
throw new ArgumentException("Property is required for class Descendant2.", nameof(alternativeName));
if (!confidentiality.IsSet)
throw new ArgumentException("Property is required for class Descendant2.", nameof(confidentiality));
if (!objectType.IsSet)
throw new ArgumentException("Property is required for class Descendant2.", nameof(objectType));
if (alternativeName.IsSet && alternativeName.Value == null)
throw new ArgumentNullException(nameof(alternativeName), "Property is not nullable for class Descendant2.");
if (confidentiality.IsSet && confidentiality.Value == null)
throw new ArgumentNullException(nameof(confidentiality), "Property is not nullable for class Descendant2.");
if (objectType.IsSet && objectType.Value == null)
throw new ArgumentNullException(nameof(objectType), "Property is not nullable for class Descendant2.");
return new Descendant2(alternativeName.Value, confidentiality.Value);
}
/// <summary>
/// Serializes a <see cref="Descendant2" />
/// </summary>
/// <param name="writer"></param>
/// <param name="descendant2"></param>
/// <param name="jsonSerializerOptions"></param>
/// <exception cref="NotImplementedException"></exception>
public override void Write(Utf8JsonWriter writer, Descendant2 descendant2, JsonSerializerOptions jsonSerializerOptions)
{
writer.WriteStartObject();
WriteProperties(writer, descendant2, jsonSerializerOptions);
writer.WriteEndObject();
}
/// <summary>
/// Serializes the properties of <see cref="Descendant2" />
/// </summary>
/// <param name="writer"></param>
/// <param name="descendant2"></param>
/// <param name="jsonSerializerOptions"></param>
/// <exception cref="NotImplementedException"></exception>
public void WriteProperties(Utf8JsonWriter writer, Descendant2 descendant2, JsonSerializerOptions jsonSerializerOptions)
{
if (descendant2.AlternativeName == null)
throw new ArgumentNullException(nameof(descendant2.AlternativeName), "Property is required for class Descendant2.");
if (descendant2.Confidentiality == null)
throw new ArgumentNullException(nameof(descendant2.Confidentiality), "Property is required for class Descendant2.");
writer.WriteString("alternativeName", descendant2.AlternativeName);
writer.WriteString("confidentiality", descendant2.Confidentiality);
writer.WriteString("objectType", Descendant2.ObjectTypeEnumToJsonValue(descendant2.ObjectType));
}
}
}

View File

@ -43,13 +43,6 @@ namespace Org.OpenAPITools.Model
partial void OnCreated();
/// <summary>
/// The discriminator
/// </summary>
[JsonIgnore]
[global::System.ComponentModel.EditorBrowsable(global::System.ComponentModel.EditorBrowsableState.Never)]
public new string ClassName { get; } = "Dog";
/// <summary>
/// Used to track the state of Breed
/// </summary>

View File

@ -35,6 +35,7 @@ namespace Org.OpenAPITools.Model
[JsonConstructor]
public EntityBase()
{
Schema = this.GetType().Name;
OnCreated();
}
@ -45,7 +46,7 @@ namespace Org.OpenAPITools.Model
/// </summary>
[JsonIgnore]
[global::System.ComponentModel.EditorBrowsable(global::System.ComponentModel.EditorBrowsableState.Never)]
public string Schema { get; } = "EntityBase";
public string Schema { get; }
/// <summary>
/// Gets or Sets additional properties

View File

@ -35,6 +35,7 @@ namespace Org.OpenAPITools.Model
[JsonConstructor]
public GrandparentAnimal()
{
PetType = this.GetType().Name;
OnCreated();
}
@ -45,7 +46,7 @@ namespace Org.OpenAPITools.Model
/// </summary>
[JsonIgnore]
[global::System.ComponentModel.EditorBrowsable(global::System.ComponentModel.EditorBrowsableState.Never)]
public string PetType { get; } = "GrandparentAnimal";
public string PetType { get; }
/// <summary>
/// Gets or Sets additional properties

View File

@ -40,13 +40,6 @@ namespace Org.OpenAPITools.Model
partial void OnCreated();
/// <summary>
/// The discriminator
/// </summary>
[JsonIgnore]
[global::System.ComponentModel.EditorBrowsable(global::System.ComponentModel.EditorBrowsableState.Never)]
public new string PetType { get; } = "ParentPet";
/// <summary>
/// Returns the string presentation of the object
/// </summary>

View File

@ -0,0 +1,285 @@
// <auto-generated>
/*
* OpenAPI Petstore
*
* This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\
*
* The version of the OpenAPI document: 1.0.0
* Generated by: https://github.com/openapitools/openapi-generator.git
*/
using System;
using System.Collections;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Linq;
using System.IO;
using System.Text;
using System.Text.RegularExpressions;
using System.Text.Json;
using System.Text.Json.Serialization;
using System.ComponentModel.DataAnnotations;
using OpenAPIClientUtils = Org.OpenAPITools.Client.ClientUtils;
using Org.OpenAPITools.Client;
namespace Org.OpenAPITools.Model
{
/// <summary>
/// TestDescendants
/// </summary>
public partial class TestDescendants : IValidatableObject
{
/// <summary>
/// Initializes a new instance of the <see cref="TestDescendants" /> class.
/// </summary>
/// <param name="alternativeName">alternativeName</param>
[JsonConstructor]
public TestDescendants(string alternativeName)
{
AlternativeName = alternativeName;
ObjectType = (ObjectTypeEnum)Enum.Parse(typeof(ObjectTypeEnum), this.GetType().Name);
OnCreated();
}
partial void OnCreated();
/// <summary>
/// Defines ObjectType
/// </summary>
public enum ObjectTypeEnum
{
/// <summary>
/// Enum Descendant1 for value: Descendant1
/// </summary>
Descendant1 = 1,
/// <summary>
/// Enum Descendant2 for value: Descendant2
/// </summary>
Descendant2 = 2
}
/// <summary>
/// Returns a <see cref="ObjectTypeEnum"/>
/// </summary>
/// <param name="value"></param>
/// <returns></returns>
/// <exception cref="NotImplementedException"></exception>
public static ObjectTypeEnum ObjectTypeEnumFromString(string value)
{
if (value.Equals("Descendant1"))
return ObjectTypeEnum.Descendant1;
if (value.Equals("Descendant2"))
return ObjectTypeEnum.Descendant2;
throw new NotImplementedException($"Could not convert value to type ObjectTypeEnum: '{value}'");
}
/// <summary>
/// Returns a <see cref="ObjectTypeEnum"/>
/// </summary>
/// <param name="value"></param>
/// <returns></returns>
public static ObjectTypeEnum? ObjectTypeEnumFromStringOrDefault(string value)
{
if (value.Equals("Descendant1"))
return ObjectTypeEnum.Descendant1;
if (value.Equals("Descendant2"))
return ObjectTypeEnum.Descendant2;
return null;
}
/// <summary>
/// Converts the <see cref="ObjectTypeEnum"/> to the json value
/// </summary>
/// <param name="value"></param>
/// <returns></returns>
/// <exception cref="NotImplementedException"></exception>
public static string ObjectTypeEnumToJsonValue(ObjectTypeEnum value)
{
if (value == ObjectTypeEnum.Descendant1)
return "Descendant1";
if (value == ObjectTypeEnum.Descendant2)
return "Descendant2";
throw new NotImplementedException($"Value could not be handled: '{value}'");
}
/// <summary>
/// Gets or Sets AlternativeName
/// </summary>
[JsonPropertyName("alternativeName")]
public string AlternativeName { get; set; }
/// <summary>
/// The discriminator
/// </summary>
[JsonIgnore]
[global::System.ComponentModel.EditorBrowsable(global::System.ComponentModel.EditorBrowsableState.Never)]
public ObjectTypeEnum ObjectType { get; }
/// <summary>
/// Gets or Sets additional properties
/// </summary>
[JsonExtensionData]
public Dictionary<string, JsonElement> AdditionalProperties { get; } = new Dictionary<string, JsonElement>();
/// <summary>
/// Returns the string presentation of the object
/// </summary>
/// <returns>String presentation of the object</returns>
public override string ToString()
{
StringBuilder sb = new StringBuilder();
sb.Append("class TestDescendants {\n");
sb.Append(" AlternativeName: ").Append(AlternativeName).Append("\n");
sb.Append(" AdditionalProperties: ").Append(AdditionalProperties).Append("\n");
sb.Append("}\n");
return sb.ToString();
}
/// <summary>
/// To validate all properties of the instance
/// </summary>
/// <param name="validationContext">Validation context</param>
/// <returns>Validation Result</returns>
IEnumerable<ValidationResult> IValidatableObject.Validate(ValidationContext validationContext)
{
return this.BaseValidate(validationContext);
}
/// <summary>
/// To validate all properties of the instance
/// </summary>
/// <param name="validationContext">Validation context</param>
/// <returns>Validation Result</returns>
protected IEnumerable<ValidationResult> BaseValidate(ValidationContext validationContext)
{
yield break;
}
}
/// <summary>
/// A Json converter for type <see cref="TestDescendants" />
/// </summary>
public class TestDescendantsJsonConverter : JsonConverter<TestDescendants>
{
/// <summary>
/// Deserializes json to <see cref="TestDescendants" />
/// </summary>
/// <param name="utf8JsonReader"></param>
/// <param name="typeToConvert"></param>
/// <param name="jsonSerializerOptions"></param>
/// <returns></returns>
/// <exception cref="JsonException"></exception>
public override TestDescendants Read(ref Utf8JsonReader utf8JsonReader, Type typeToConvert, JsonSerializerOptions jsonSerializerOptions)
{
int currentDepth = utf8JsonReader.CurrentDepth;
if (utf8JsonReader.TokenType != JsonTokenType.StartObject && utf8JsonReader.TokenType != JsonTokenType.StartArray)
throw new JsonException();
JsonTokenType startingTokenType = utf8JsonReader.TokenType;
Option<string> alternativeName = default;
Option<TestDescendants.ObjectTypeEnum?> objectType = default;
string discriminator = ClientUtils.GetDiscriminator(utf8JsonReader, "objectType");
if (discriminator != null && discriminator.Equals("Descendant1"))
return JsonSerializer.Deserialize<Descendant1>(ref utf8JsonReader, jsonSerializerOptions) ?? throw new JsonException("The result was an unexpected value.");
if (discriminator != null && discriminator.Equals("Descendant2"))
return JsonSerializer.Deserialize<Descendant2>(ref utf8JsonReader, jsonSerializerOptions) ?? throw new JsonException("The result was an unexpected value.");
while (utf8JsonReader.Read())
{
if (startingTokenType == JsonTokenType.StartObject && utf8JsonReader.TokenType == JsonTokenType.EndObject && currentDepth == utf8JsonReader.CurrentDepth)
break;
if (startingTokenType == JsonTokenType.StartArray && utf8JsonReader.TokenType == JsonTokenType.EndArray && currentDepth == utf8JsonReader.CurrentDepth)
break;
if (utf8JsonReader.TokenType == JsonTokenType.PropertyName && currentDepth == utf8JsonReader.CurrentDepth - 1)
{
string localVarJsonPropertyName = utf8JsonReader.GetString();
utf8JsonReader.Read();
switch (localVarJsonPropertyName)
{
case "alternativeName":
alternativeName = new Option<string>(utf8JsonReader.GetString());
break;
case "objectType":
string objectTypeRawValue = utf8JsonReader.GetString();
if (objectTypeRawValue != null)
objectType = new Option<TestDescendants.ObjectTypeEnum?>(TestDescendants.ObjectTypeEnumFromStringOrDefault(objectTypeRawValue));
break;
default:
break;
}
}
}
if (!alternativeName.IsSet)
throw new ArgumentException("Property is required for class TestDescendants.", nameof(alternativeName));
if (!objectType.IsSet)
throw new ArgumentException("Property is required for class TestDescendants.", nameof(objectType));
if (alternativeName.IsSet && alternativeName.Value == null)
throw new ArgumentNullException(nameof(alternativeName), "Property is not nullable for class TestDescendants.");
if (objectType.IsSet && objectType.Value == null)
throw new ArgumentNullException(nameof(objectType), "Property is not nullable for class TestDescendants.");
return new TestDescendants(alternativeName.Value);
}
/// <summary>
/// Serializes a <see cref="TestDescendants" />
/// </summary>
/// <param name="writer"></param>
/// <param name="testDescendants"></param>
/// <param name="jsonSerializerOptions"></param>
/// <exception cref="NotImplementedException"></exception>
public override void Write(Utf8JsonWriter writer, TestDescendants testDescendants, JsonSerializerOptions jsonSerializerOptions)
{
if (testDescendants is Descendant1 descendant1){
JsonSerializer.Serialize<Descendant1>(writer, descendant1, jsonSerializerOptions);
return;
}
if (testDescendants is Descendant2 descendant2){
JsonSerializer.Serialize<Descendant2>(writer, descendant2, jsonSerializerOptions);
return;
}
writer.WriteStartObject();
WriteProperties(writer, testDescendants, jsonSerializerOptions);
writer.WriteEndObject();
}
/// <summary>
/// Serializes the properties of <see cref="TestDescendants" />
/// </summary>
/// <param name="writer"></param>
/// <param name="testDescendants"></param>
/// <param name="jsonSerializerOptions"></param>
/// <exception cref="NotImplementedException"></exception>
public void WriteProperties(Utf8JsonWriter writer, TestDescendants testDescendants, JsonSerializerOptions jsonSerializerOptions)
{
if (testDescendants.AlternativeName == null)
throw new ArgumentNullException(nameof(testDescendants.AlternativeName), "Property is required for class TestDescendants.");
writer.WriteString("alternativeName", testDescendants.AlternativeName);
writer.WriteString("objectType", TestDescendants.ObjectTypeEnumToJsonValue(testDescendants.ObjectType));
}
}
}

View File

@ -57,13 +57,6 @@ namespace Org.OpenAPITools.Model
[JsonPropertyName("children")]
public List<Child> Children { get { return this.ChildrenOption; } set { this.ChildrenOption = new Option<List<Child>>(value); } }
/// <summary>
/// The discriminator
/// </summary>
[JsonIgnore]
[global::System.ComponentModel.EditorBrowsable(global::System.ComponentModel.EditorBrowsableState.Never)]
public new string Type { get; } = "Adult";
/// <summary>
/// Returns the string presentation of the object
/// </summary>

View File

@ -59,13 +59,6 @@ namespace Org.OpenAPITools.Model
[JsonPropertyName("age")]
public int? Age { get { return this.AgeOption; } set { this.AgeOption = new Option<int?>(value); } }
/// <summary>
/// The discriminator
/// </summary>
[JsonIgnore]
[global::System.ComponentModel.EditorBrowsable(global::System.ComponentModel.EditorBrowsableState.Never)]
public new string Type { get; } = "Child";
/// <summary>
/// Used to track the state of BoosterSeat
/// </summary>

View File

@ -39,6 +39,7 @@ namespace Org.OpenAPITools.Model
{
FirstNameOption = firstName;
LastNameOption = lastName;
Type = this.GetType().Name;
OnCreated();
}
@ -75,7 +76,7 @@ namespace Org.OpenAPITools.Model
/// </summary>
[JsonIgnore]
[global::System.ComponentModel.EditorBrowsable(global::System.ComponentModel.EditorBrowsableState.Never)]
public string Type { get; } = "Person";
public string Type { get; }
/// <summary>
/// Gets or Sets additional properties

View File

@ -34,6 +34,8 @@ docs/models/CopyActivity.md
docs/models/DanishPig.md
docs/models/DateOnlyClass.md
docs/models/DeprecatedObject.md
docs/models/Descendant1.md
docs/models/Descendant2.md
docs/models/Dog.md
docs/models/Drawing.md
docs/models/EntityBase.md
@ -116,6 +118,8 @@ docs/models/SpecialModelName.md
docs/models/Tag.md
docs/models/TestCollectionEndingWithWordList.md
docs/models/TestCollectionEndingWithWordListObject.md
docs/models/TestDescendants.md
docs/models/TestDescendantsObjectType.md
docs/models/TestEnumParametersEnumHeaderStringParameter.md
docs/models/TestEnumParametersEnumQueryDoubleParameter.md
docs/models/TestEnumParametersEnumQueryIntegerParameter.md
@ -195,6 +199,8 @@ src/Org.OpenAPITools/Model/CopyActivity.cs
src/Org.OpenAPITools/Model/DanishPig.cs
src/Org.OpenAPITools/Model/DateOnlyClass.cs
src/Org.OpenAPITools/Model/DeprecatedObject.cs
src/Org.OpenAPITools/Model/Descendant1.cs
src/Org.OpenAPITools/Model/Descendant2.cs
src/Org.OpenAPITools/Model/Dog.cs
src/Org.OpenAPITools/Model/Drawing.cs
src/Org.OpenAPITools/Model/EntityBase.cs
@ -277,6 +283,8 @@ src/Org.OpenAPITools/Model/SpecialModelName.cs
src/Org.OpenAPITools/Model/Tag.cs
src/Org.OpenAPITools/Model/TestCollectionEndingWithWordList.cs
src/Org.OpenAPITools/Model/TestCollectionEndingWithWordListObject.cs
src/Org.OpenAPITools/Model/TestDescendants.cs
src/Org.OpenAPITools/Model/TestDescendantsObjectType.cs
src/Org.OpenAPITools/Model/TestEnumParametersEnumHeaderStringParameter.cs
src/Org.OpenAPITools/Model/TestEnumParametersEnumQueryDoubleParameter.cs
src/Org.OpenAPITools/Model/TestEnumParametersEnumQueryIntegerParameter.cs

View File

@ -2592,6 +2592,37 @@ components:
properties:
id:
type: string
Descendant1:
allOf:
- $ref: '#/components/schemas/TestDescendants'
- properties:
descendantName:
type: string
required:
- descendantName
type: object
Descendant2:
allOf:
- $ref: '#/components/schemas/TestDescendants'
- properties:
confidentiality:
type: string
required:
- confidentiality
type: object
TestDescendants:
description: ""
discriminator:
propertyName: objectType
properties:
alternativeName:
type: string
objectType:
$ref: '#/components/schemas/TestDescendants_objectType'
required:
- alternativeName
- objectType
type: object
CopyActivity:
allOf:
- $ref: '#/components/schemas/EntityBase'
@ -2984,6 +3015,11 @@ components:
type: number
- $ref: '#/components/schemas/MixedSubId'
description: Mixed anyOf types for testing
TestDescendants_objectType:
enum:
- Descendant1
- Descendant2
type: string
securitySchemes:
petstore_auth:
flows:

View File

@ -0,0 +1,12 @@
# Org.OpenAPITools.Model.Descendant1
## Properties
Name | Type | Description | Notes
------------ | ------------- | ------------- | -------------
**AlternativeName** | **string** | |
**ObjectType** | **TestDescendantsObjectType** | |
**DescendantName** | **string** | |
[[Back to Model list]](../../README.md#documentation-for-models) [[Back to API list]](../../README.md#documentation-for-api-endpoints) [[Back to README]](../../README.md)

View File

@ -0,0 +1,12 @@
# Org.OpenAPITools.Model.Descendant2
## Properties
Name | Type | Description | Notes
------------ | ------------- | ------------- | -------------
**AlternativeName** | **string** | |
**ObjectType** | **TestDescendantsObjectType** | |
**Confidentiality** | **string** | |
[[Back to Model list]](../../README.md#documentation-for-models) [[Back to API list]](../../README.md#documentation-for-api-endpoints) [[Back to README]](../../README.md)

View File

@ -0,0 +1,11 @@
# Org.OpenAPITools.Model.TestDescendants
## Properties
Name | Type | Description | Notes
------------ | ------------- | ------------- | -------------
**AlternativeName** | **string** | |
**ObjectType** | **TestDescendantsObjectType** | |
[[Back to Model list]](../../README.md#documentation-for-models) [[Back to API list]](../../README.md#documentation-for-api-endpoints) [[Back to README]](../../README.md)

View File

@ -0,0 +1,9 @@
# Org.OpenAPITools.Model.TestDescendantsObjectType
## Properties
Name | Type | Description | Notes
------------ | ------------- | ------------- | -------------
[[Back to Model list]](../../README.md#documentation-for-models) [[Back to API list]](../../README.md#documentation-for-api-endpoints) [[Back to README]](../../README.md)

View File

@ -0,0 +1,65 @@
/*
* OpenAPI Petstore
*
* This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\
*
* The version of the OpenAPI document: 1.0.0
* Generated by: https://github.com/openapitools/openapi-generator.git
*/
using Xunit;
using System;
using System.Linq;
using System.IO;
using System.Collections.Generic;
using Org.OpenAPITools.Model;
using Org.OpenAPITools.Client;
using System.Reflection;
namespace Org.OpenAPITools.Test.Model
{
/// <summary>
/// Class for testing Descendant1
/// </summary>
/// <remarks>
/// This file is automatically generated by OpenAPI Generator (https://openapi-generator.tech).
/// Please update the test case below to test the model.
/// </remarks>
public class Descendant1Tests : IDisposable
{
// TODO uncomment below to declare an instance variable for Descendant1
//private Descendant1 instance;
public Descendant1Tests()
{
// TODO uncomment below to create an instance of Descendant1
//instance = new Descendant1();
}
public void Dispose()
{
// Cleanup when everything is done.
}
/// <summary>
/// Test an instance of Descendant1
/// </summary>
[Fact]
public void Descendant1InstanceTest()
{
// TODO uncomment below to test "IsType" Descendant1
//Assert.IsType<Descendant1>(instance);
}
/// <summary>
/// Test the property 'DescendantName'
/// </summary>
[Fact]
public void DescendantNameTest()
{
// TODO unit test for the property 'DescendantName'
}
}
}

View File

@ -0,0 +1,65 @@
/*
* OpenAPI Petstore
*
* This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\
*
* The version of the OpenAPI document: 1.0.0
* Generated by: https://github.com/openapitools/openapi-generator.git
*/
using Xunit;
using System;
using System.Linq;
using System.IO;
using System.Collections.Generic;
using Org.OpenAPITools.Model;
using Org.OpenAPITools.Client;
using System.Reflection;
namespace Org.OpenAPITools.Test.Model
{
/// <summary>
/// Class for testing Descendant2
/// </summary>
/// <remarks>
/// This file is automatically generated by OpenAPI Generator (https://openapi-generator.tech).
/// Please update the test case below to test the model.
/// </remarks>
public class Descendant2Tests : IDisposable
{
// TODO uncomment below to declare an instance variable for Descendant2
//private Descendant2 instance;
public Descendant2Tests()
{
// TODO uncomment below to create an instance of Descendant2
//instance = new Descendant2();
}
public void Dispose()
{
// Cleanup when everything is done.
}
/// <summary>
/// Test an instance of Descendant2
/// </summary>
[Fact]
public void Descendant2InstanceTest()
{
// TODO uncomment below to test "IsType" Descendant2
//Assert.IsType<Descendant2>(instance);
}
/// <summary>
/// Test the property 'Confidentiality'
/// </summary>
[Fact]
public void ConfidentialityTest()
{
// TODO unit test for the property 'Confidentiality'
}
}
}

View File

@ -0,0 +1,56 @@
/*
* OpenAPI Petstore
*
* This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\
*
* The version of the OpenAPI document: 1.0.0
* Generated by: https://github.com/openapitools/openapi-generator.git
*/
using Xunit;
using System;
using System.Linq;
using System.IO;
using System.Collections.Generic;
using Org.OpenAPITools.Model;
using Org.OpenAPITools.Client;
using System.Reflection;
namespace Org.OpenAPITools.Test.Model
{
/// <summary>
/// Class for testing TestDescendantsObjectType
/// </summary>
/// <remarks>
/// This file is automatically generated by OpenAPI Generator (https://openapi-generator.tech).
/// Please update the test case below to test the model.
/// </remarks>
public class TestDescendantsObjectTypeTests : IDisposable
{
// TODO uncomment below to declare an instance variable for TestDescendantsObjectType
//private TestDescendantsObjectType instance;
public TestDescendantsObjectTypeTests()
{
// TODO uncomment below to create an instance of TestDescendantsObjectType
//instance = new TestDescendantsObjectType();
}
public void Dispose()
{
// Cleanup when everything is done.
}
/// <summary>
/// Test an instance of TestDescendantsObjectType
/// </summary>
[Fact]
public void TestDescendantsObjectTypeInstanceTest()
{
// TODO uncomment below to test "IsType" TestDescendantsObjectType
//Assert.IsType<TestDescendantsObjectType>(instance);
}
}
}

View File

@ -0,0 +1,94 @@
/*
* OpenAPI Petstore
*
* This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\
*
* The version of the OpenAPI document: 1.0.0
* Generated by: https://github.com/openapitools/openapi-generator.git
*/
using Xunit;
using System;
using System.Linq;
using System.IO;
using System.Collections.Generic;
using Org.OpenAPITools.Model;
using Org.OpenAPITools.Client;
using System.Reflection;
namespace Org.OpenAPITools.Test.Model
{
/// <summary>
/// Class for testing TestDescendants
/// </summary>
/// <remarks>
/// This file is automatically generated by OpenAPI Generator (https://openapi-generator.tech).
/// Please update the test case below to test the model.
/// </remarks>
public class TestDescendantsTests : IDisposable
{
// TODO uncomment below to declare an instance variable for TestDescendants
//private TestDescendants instance;
public TestDescendantsTests()
{
// TODO uncomment below to create an instance of TestDescendants
//instance = new TestDescendants();
}
public void Dispose()
{
// Cleanup when everything is done.
}
/// <summary>
/// Test an instance of TestDescendants
/// </summary>
[Fact]
public void TestDescendantsInstanceTest()
{
// TODO uncomment below to test "IsType" TestDescendants
//Assert.IsType<TestDescendants>(instance);
}
/// <summary>
/// Test deserialize a Descendant1 from type TestDescendants
/// </summary>
[Fact]
public void Descendant1DeserializeFromTestDescendantsTest()
{
// TODO uncomment below to test deserialize a Descendant1 from type TestDescendants
//Assert.IsType<TestDescendants>(JsonConvert.DeserializeObject<TestDescendants>(new Descendant1().ToJson()));
}
/// <summary>
/// Test deserialize a Descendant2 from type TestDescendants
/// </summary>
[Fact]
public void Descendant2DeserializeFromTestDescendantsTest()
{
// TODO uncomment below to test deserialize a Descendant2 from type TestDescendants
//Assert.IsType<TestDescendants>(JsonConvert.DeserializeObject<TestDescendants>(new Descendant2().ToJson()));
}
/// <summary>
/// Test the property 'AlternativeName'
/// </summary>
[Fact]
public void AlternativeNameTest()
{
// TODO unit test for the property 'AlternativeName'
}
/// <summary>
/// Test the property 'ObjectType'
/// </summary>
[Fact]
public void ObjectTypeTest()
{
// TODO unit test for the property 'ObjectType'
}
}
}

View File

@ -213,6 +213,8 @@ namespace Org.OpenAPITools.Client
return RequiredClassRequiredNullableEnumIntegerOnlyValueConverter.ToJsonValue(requiredClassRequiredNullableEnumIntegerOnly).ToString();
if (obj is RequiredClassRequiredNullableEnumString requiredClassRequiredNullableEnumString)
return RequiredClassRequiredNullableEnumStringValueConverter.ToJsonValue(requiredClassRequiredNullableEnumString);
if (obj is TestDescendantsObjectType testDescendantsObjectType)
return TestDescendantsObjectTypeValueConverter.ToJsonValue(testDescendantsObjectType);
if (obj is TestEnumParametersEnumHeaderStringParameter testEnumParametersEnumHeaderStringParameter)
return TestEnumParametersEnumHeaderStringParameterValueConverter.ToJsonValue(testEnumParametersEnumHeaderStringParameter);
if (obj is TestEnumParametersEnumQueryDoubleParameter testEnumParametersEnumQueryDoubleParameter)

View File

@ -64,6 +64,8 @@ namespace Org.OpenAPITools.Client
_jsonOptions.Converters.Add(new DanishPigJsonConverter());
_jsonOptions.Converters.Add(new DateOnlyClassJsonConverter());
_jsonOptions.Converters.Add(new DeprecatedObjectJsonConverter());
_jsonOptions.Converters.Add(new Descendant1JsonConverter());
_jsonOptions.Converters.Add(new Descendant2JsonConverter());
_jsonOptions.Converters.Add(new DogJsonConverter());
_jsonOptions.Converters.Add(new DrawingJsonConverter());
_jsonOptions.Converters.Add(new EntityBaseJsonConverter());
@ -167,6 +169,9 @@ namespace Org.OpenAPITools.Client
_jsonOptions.Converters.Add(new TagJsonConverter());
_jsonOptions.Converters.Add(new TestCollectionEndingWithWordListJsonConverter());
_jsonOptions.Converters.Add(new TestCollectionEndingWithWordListObjectJsonConverter());
_jsonOptions.Converters.Add(new TestDescendantsJsonConverter());
_jsonOptions.Converters.Add(new TestDescendantsObjectTypeJsonConverter());
_jsonOptions.Converters.Add(new TestDescendantsObjectTypeNullableJsonConverter());
_jsonOptions.Converters.Add(new TestEnumParametersEnumHeaderStringParameterJsonConverter());
_jsonOptions.Converters.Add(new TestEnumParametersEnumHeaderStringParameterNullableJsonConverter());
_jsonOptions.Converters.Add(new TestEnumParametersEnumQueryDoubleParameterJsonConverter());

View File

@ -36,6 +36,7 @@ namespace Org.OpenAPITools.Model
[JsonConstructor]
public Animal(Option<string> color = default)
{
ClassName = this.GetType().Name;
ColorOption = color;
OnCreated();
}
@ -47,7 +48,7 @@ namespace Org.OpenAPITools.Model
/// </summary>
[JsonIgnore]
[global::System.ComponentModel.EditorBrowsable(global::System.ComponentModel.EditorBrowsableState.Never)]
public string ClassName { get; } = "Animal";
public string ClassName { get; }
/// <summary>
/// Used to track the state of Color

View File

@ -43,13 +43,6 @@ namespace Org.OpenAPITools.Model
partial void OnCreated();
/// <summary>
/// The discriminator
/// </summary>
[JsonIgnore]
[global::System.ComponentModel.EditorBrowsable(global::System.ComponentModel.EditorBrowsableState.Never)]
public new string ClassName { get; } = "Cat";
/// <summary>
/// Used to track the state of Declawed
/// </summary>

View File

@ -36,6 +36,7 @@ namespace Org.OpenAPITools.Model
[JsonConstructor]
public ChildCat(Option<string> name = default) : base()
{
PetType = (ChildCatAllOfPetType)Enum.Parse(typeof(ChildCatAllOfPetType), this.GetType().Name);
NameOption = name;
OnCreated();
}
@ -47,7 +48,7 @@ namespace Org.OpenAPITools.Model
/// </summary>
[JsonIgnore]
[global::System.ComponentModel.EditorBrowsable(global::System.ComponentModel.EditorBrowsableState.Never)]
public new ChildCatAllOfPetType PetType { get; } = (ChildCatAllOfPetType)Enum.Parse(typeof(ChildCatAllOfPetType), "ChildCat");
public new ChildCatAllOfPetType PetType { get; }
/// <summary>
/// Used to track the state of Name

View File

@ -36,6 +36,7 @@ namespace Org.OpenAPITools.Model
[JsonConstructor]
public CopyActivity(string copyActivitytt) : base()
{
Schema = (SchemaEnum)Enum.Parse(typeof(SchemaEnum), this.GetType().Name);
CopyActivitytt = copyActivitytt;
OnCreated();
}
@ -99,7 +100,7 @@ namespace Org.OpenAPITools.Model
/// </summary>
[JsonIgnore]
[global::System.ComponentModel.EditorBrowsable(global::System.ComponentModel.EditorBrowsableState.Never)]
public new SchemaEnum Schema { get; } = (SchemaEnum)Enum.Parse(typeof(SchemaEnum), "CopyActivity");
public new SchemaEnum Schema { get; }
/// <summary>
/// Gets or Sets CopyActivitytt

View File

@ -0,0 +1,183 @@
// <auto-generated>
/*
* OpenAPI Petstore
*
* This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\
*
* The version of the OpenAPI document: 1.0.0
* Generated by: https://github.com/openapitools/openapi-generator.git
*/
using System;
using System.Collections;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Linq;
using System.IO;
using System.Text;
using System.Text.RegularExpressions;
using System.Text.Json;
using System.Text.Json.Serialization;
using System.ComponentModel.DataAnnotations;
using OpenAPIClientUtils = Org.OpenAPITools.Client.ClientUtils;
using Org.OpenAPITools.Client;
namespace Org.OpenAPITools.Model
{
/// <summary>
/// Descendant1
/// </summary>
public partial class Descendant1 : TestDescendants, IValidatableObject
{
/// <summary>
/// Initializes a new instance of the <see cref="Descendant1" /> class.
/// </summary>
/// <param name="alternativeName">alternativeName</param>
/// <param name="descendantName">descendantName</param>
[JsonConstructor]
public Descendant1(string alternativeName, string descendantName) : base(alternativeName)
{
DescendantName = descendantName;
OnCreated();
}
partial void OnCreated();
/// <summary>
/// Gets or Sets DescendantName
/// </summary>
[JsonPropertyName("descendantName")]
public string DescendantName { get; set; }
/// <summary>
/// Returns the string presentation of the object
/// </summary>
/// <returns>String presentation of the object</returns>
public override string ToString()
{
StringBuilder sb = new StringBuilder();
sb.Append("class Descendant1 {\n");
sb.Append(" ").Append(base.ToString()?.Replace("\n", "\n ")).Append("\n");
sb.Append(" DescendantName: ").Append(DescendantName).Append("\n");
sb.Append("}\n");
return sb.ToString();
}
}
/// <summary>
/// A Json converter for type <see cref="Descendant1" />
/// </summary>
public class Descendant1JsonConverter : JsonConverter<Descendant1>
{
/// <summary>
/// Deserializes json to <see cref="Descendant1" />
/// </summary>
/// <param name="utf8JsonReader"></param>
/// <param name="typeToConvert"></param>
/// <param name="jsonSerializerOptions"></param>
/// <returns></returns>
/// <exception cref="JsonException"></exception>
public override Descendant1 Read(ref Utf8JsonReader utf8JsonReader, Type typeToConvert, JsonSerializerOptions jsonSerializerOptions)
{
int currentDepth = utf8JsonReader.CurrentDepth;
if (utf8JsonReader.TokenType != JsonTokenType.StartObject && utf8JsonReader.TokenType != JsonTokenType.StartArray)
throw new JsonException();
JsonTokenType startingTokenType = utf8JsonReader.TokenType;
Option<string> alternativeName = default;
Option<string> descendantName = default;
Option<TestDescendantsObjectType?> objectType = default;
while (utf8JsonReader.Read())
{
if (startingTokenType == JsonTokenType.StartObject && utf8JsonReader.TokenType == JsonTokenType.EndObject && currentDepth == utf8JsonReader.CurrentDepth)
break;
if (startingTokenType == JsonTokenType.StartArray && utf8JsonReader.TokenType == JsonTokenType.EndArray && currentDepth == utf8JsonReader.CurrentDepth)
break;
if (utf8JsonReader.TokenType == JsonTokenType.PropertyName && currentDepth == utf8JsonReader.CurrentDepth - 1)
{
string localVarJsonPropertyName = utf8JsonReader.GetString();
utf8JsonReader.Read();
switch (localVarJsonPropertyName)
{
case "alternativeName":
alternativeName = new Option<string>(utf8JsonReader.GetString());
break;
case "descendantName":
descendantName = new Option<string>(utf8JsonReader.GetString());
break;
case "objectType":
string objectTypeRawValue = utf8JsonReader.GetString();
if (objectTypeRawValue != null)
objectType = new Option<TestDescendantsObjectType?>(TestDescendantsObjectTypeValueConverter.FromStringOrDefault(objectTypeRawValue));
break;
default:
break;
}
}
}
if (!alternativeName.IsSet)
throw new ArgumentException("Property is required for class Descendant1.", nameof(alternativeName));
if (!descendantName.IsSet)
throw new ArgumentException("Property is required for class Descendant1.", nameof(descendantName));
if (!objectType.IsSet)
throw new ArgumentException("Property is required for class Descendant1.", nameof(objectType));
if (alternativeName.IsSet && alternativeName.Value == null)
throw new ArgumentNullException(nameof(alternativeName), "Property is not nullable for class Descendant1.");
if (descendantName.IsSet && descendantName.Value == null)
throw new ArgumentNullException(nameof(descendantName), "Property is not nullable for class Descendant1.");
if (objectType.IsSet && objectType.Value == null)
throw new ArgumentNullException(nameof(objectType), "Property is not nullable for class Descendant1.");
return new Descendant1(alternativeName.Value, descendantName.Value);
}
/// <summary>
/// Serializes a <see cref="Descendant1" />
/// </summary>
/// <param name="writer"></param>
/// <param name="descendant1"></param>
/// <param name="jsonSerializerOptions"></param>
/// <exception cref="NotImplementedException"></exception>
public override void Write(Utf8JsonWriter writer, Descendant1 descendant1, JsonSerializerOptions jsonSerializerOptions)
{
writer.WriteStartObject();
WriteProperties(writer, descendant1, jsonSerializerOptions);
writer.WriteEndObject();
}
/// <summary>
/// Serializes the properties of <see cref="Descendant1" />
/// </summary>
/// <param name="writer"></param>
/// <param name="descendant1"></param>
/// <param name="jsonSerializerOptions"></param>
/// <exception cref="NotImplementedException"></exception>
public void WriteProperties(Utf8JsonWriter writer, Descendant1 descendant1, JsonSerializerOptions jsonSerializerOptions)
{
if (descendant1.AlternativeName == null)
throw new ArgumentNullException(nameof(descendant1.AlternativeName), "Property is required for class Descendant1.");
if (descendant1.DescendantName == null)
throw new ArgumentNullException(nameof(descendant1.DescendantName), "Property is required for class Descendant1.");
writer.WriteString("alternativeName", descendant1.AlternativeName);
writer.WriteString("descendantName", descendant1.DescendantName);
writer.WriteString("objectType", TestDescendantsObjectTypeValueConverter.ToJsonValue(descendant1.ObjectType));
}
}
}

View File

@ -0,0 +1,183 @@
// <auto-generated>
/*
* OpenAPI Petstore
*
* This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\
*
* The version of the OpenAPI document: 1.0.0
* Generated by: https://github.com/openapitools/openapi-generator.git
*/
using System;
using System.Collections;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Linq;
using System.IO;
using System.Text;
using System.Text.RegularExpressions;
using System.Text.Json;
using System.Text.Json.Serialization;
using System.ComponentModel.DataAnnotations;
using OpenAPIClientUtils = Org.OpenAPITools.Client.ClientUtils;
using Org.OpenAPITools.Client;
namespace Org.OpenAPITools.Model
{
/// <summary>
/// Descendant2
/// </summary>
public partial class Descendant2 : TestDescendants, IValidatableObject
{
/// <summary>
/// Initializes a new instance of the <see cref="Descendant2" /> class.
/// </summary>
/// <param name="alternativeName">alternativeName</param>
/// <param name="confidentiality">confidentiality</param>
[JsonConstructor]
public Descendant2(string alternativeName, string confidentiality) : base(alternativeName)
{
Confidentiality = confidentiality;
OnCreated();
}
partial void OnCreated();
/// <summary>
/// Gets or Sets Confidentiality
/// </summary>
[JsonPropertyName("confidentiality")]
public string Confidentiality { get; set; }
/// <summary>
/// Returns the string presentation of the object
/// </summary>
/// <returns>String presentation of the object</returns>
public override string ToString()
{
StringBuilder sb = new StringBuilder();
sb.Append("class Descendant2 {\n");
sb.Append(" ").Append(base.ToString()?.Replace("\n", "\n ")).Append("\n");
sb.Append(" Confidentiality: ").Append(Confidentiality).Append("\n");
sb.Append("}\n");
return sb.ToString();
}
}
/// <summary>
/// A Json converter for type <see cref="Descendant2" />
/// </summary>
public class Descendant2JsonConverter : JsonConverter<Descendant2>
{
/// <summary>
/// Deserializes json to <see cref="Descendant2" />
/// </summary>
/// <param name="utf8JsonReader"></param>
/// <param name="typeToConvert"></param>
/// <param name="jsonSerializerOptions"></param>
/// <returns></returns>
/// <exception cref="JsonException"></exception>
public override Descendant2 Read(ref Utf8JsonReader utf8JsonReader, Type typeToConvert, JsonSerializerOptions jsonSerializerOptions)
{
int currentDepth = utf8JsonReader.CurrentDepth;
if (utf8JsonReader.TokenType != JsonTokenType.StartObject && utf8JsonReader.TokenType != JsonTokenType.StartArray)
throw new JsonException();
JsonTokenType startingTokenType = utf8JsonReader.TokenType;
Option<string> alternativeName = default;
Option<string> confidentiality = default;
Option<TestDescendantsObjectType?> objectType = default;
while (utf8JsonReader.Read())
{
if (startingTokenType == JsonTokenType.StartObject && utf8JsonReader.TokenType == JsonTokenType.EndObject && currentDepth == utf8JsonReader.CurrentDepth)
break;
if (startingTokenType == JsonTokenType.StartArray && utf8JsonReader.TokenType == JsonTokenType.EndArray && currentDepth == utf8JsonReader.CurrentDepth)
break;
if (utf8JsonReader.TokenType == JsonTokenType.PropertyName && currentDepth == utf8JsonReader.CurrentDepth - 1)
{
string localVarJsonPropertyName = utf8JsonReader.GetString();
utf8JsonReader.Read();
switch (localVarJsonPropertyName)
{
case "alternativeName":
alternativeName = new Option<string>(utf8JsonReader.GetString());
break;
case "confidentiality":
confidentiality = new Option<string>(utf8JsonReader.GetString());
break;
case "objectType":
string objectTypeRawValue = utf8JsonReader.GetString();
if (objectTypeRawValue != null)
objectType = new Option<TestDescendantsObjectType?>(TestDescendantsObjectTypeValueConverter.FromStringOrDefault(objectTypeRawValue));
break;
default:
break;
}
}
}
if (!alternativeName.IsSet)
throw new ArgumentException("Property is required for class Descendant2.", nameof(alternativeName));
if (!confidentiality.IsSet)
throw new ArgumentException("Property is required for class Descendant2.", nameof(confidentiality));
if (!objectType.IsSet)
throw new ArgumentException("Property is required for class Descendant2.", nameof(objectType));
if (alternativeName.IsSet && alternativeName.Value == null)
throw new ArgumentNullException(nameof(alternativeName), "Property is not nullable for class Descendant2.");
if (confidentiality.IsSet && confidentiality.Value == null)
throw new ArgumentNullException(nameof(confidentiality), "Property is not nullable for class Descendant2.");
if (objectType.IsSet && objectType.Value == null)
throw new ArgumentNullException(nameof(objectType), "Property is not nullable for class Descendant2.");
return new Descendant2(alternativeName.Value, confidentiality.Value);
}
/// <summary>
/// Serializes a <see cref="Descendant2" />
/// </summary>
/// <param name="writer"></param>
/// <param name="descendant2"></param>
/// <param name="jsonSerializerOptions"></param>
/// <exception cref="NotImplementedException"></exception>
public override void Write(Utf8JsonWriter writer, Descendant2 descendant2, JsonSerializerOptions jsonSerializerOptions)
{
writer.WriteStartObject();
WriteProperties(writer, descendant2, jsonSerializerOptions);
writer.WriteEndObject();
}
/// <summary>
/// Serializes the properties of <see cref="Descendant2" />
/// </summary>
/// <param name="writer"></param>
/// <param name="descendant2"></param>
/// <param name="jsonSerializerOptions"></param>
/// <exception cref="NotImplementedException"></exception>
public void WriteProperties(Utf8JsonWriter writer, Descendant2 descendant2, JsonSerializerOptions jsonSerializerOptions)
{
if (descendant2.AlternativeName == null)
throw new ArgumentNullException(nameof(descendant2.AlternativeName), "Property is required for class Descendant2.");
if (descendant2.Confidentiality == null)
throw new ArgumentNullException(nameof(descendant2.Confidentiality), "Property is required for class Descendant2.");
writer.WriteString("alternativeName", descendant2.AlternativeName);
writer.WriteString("confidentiality", descendant2.Confidentiality);
writer.WriteString("objectType", TestDescendantsObjectTypeValueConverter.ToJsonValue(descendant2.ObjectType));
}
}
}

View File

@ -43,13 +43,6 @@ namespace Org.OpenAPITools.Model
partial void OnCreated();
/// <summary>
/// The discriminator
/// </summary>
[JsonIgnore]
[global::System.ComponentModel.EditorBrowsable(global::System.ComponentModel.EditorBrowsableState.Never)]
public new string ClassName { get; } = "Dog";
/// <summary>
/// Used to track the state of Breed
/// </summary>

View File

@ -35,6 +35,7 @@ namespace Org.OpenAPITools.Model
[JsonConstructor]
public EntityBase()
{
Schema = this.GetType().Name;
OnCreated();
}
@ -45,7 +46,7 @@ namespace Org.OpenAPITools.Model
/// </summary>
[JsonIgnore]
[global::System.ComponentModel.EditorBrowsable(global::System.ComponentModel.EditorBrowsableState.Never)]
public string Schema { get; } = "EntityBase";
public string Schema { get; }
/// <summary>
/// Gets or Sets additional properties

View File

@ -35,6 +35,7 @@ namespace Org.OpenAPITools.Model
[JsonConstructor]
public GrandparentAnimal()
{
PetType = this.GetType().Name;
OnCreated();
}
@ -45,7 +46,7 @@ namespace Org.OpenAPITools.Model
/// </summary>
[JsonIgnore]
[global::System.ComponentModel.EditorBrowsable(global::System.ComponentModel.EditorBrowsableState.Never)]
public string PetType { get; } = "GrandparentAnimal";
public string PetType { get; }
/// <summary>
/// Gets or Sets additional properties

View File

@ -40,13 +40,6 @@ namespace Org.OpenAPITools.Model
partial void OnCreated();
/// <summary>
/// The discriminator
/// </summary>
[JsonIgnore]
[global::System.ComponentModel.EditorBrowsable(global::System.ComponentModel.EditorBrowsableState.Never)]
public new string PetType { get; } = "ParentPet";
/// <summary>
/// Returns the string presentation of the object
/// </summary>

View File

@ -0,0 +1,219 @@
// <auto-generated>
/*
* OpenAPI Petstore
*
* This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\
*
* The version of the OpenAPI document: 1.0.0
* Generated by: https://github.com/openapitools/openapi-generator.git
*/
using System;
using System.Collections;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Linq;
using System.IO;
using System.Text;
using System.Text.RegularExpressions;
using System.Text.Json;
using System.Text.Json.Serialization;
using System.ComponentModel.DataAnnotations;
using OpenAPIClientUtils = Org.OpenAPITools.Client.ClientUtils;
using Org.OpenAPITools.Client;
namespace Org.OpenAPITools.Model
{
/// <summary>
/// TestDescendants
/// </summary>
public partial class TestDescendants : IValidatableObject
{
/// <summary>
/// Initializes a new instance of the <see cref="TestDescendants" /> class.
/// </summary>
/// <param name="alternativeName">alternativeName</param>
[JsonConstructor]
public TestDescendants(string alternativeName)
{
AlternativeName = alternativeName;
ObjectType = (TestDescendantsObjectType)Enum.Parse(typeof(TestDescendantsObjectType), this.GetType().Name);
OnCreated();
}
partial void OnCreated();
/// <summary>
/// Gets or Sets AlternativeName
/// </summary>
[JsonPropertyName("alternativeName")]
public string AlternativeName { get; set; }
/// <summary>
/// The discriminator
/// </summary>
[JsonIgnore]
[global::System.ComponentModel.EditorBrowsable(global::System.ComponentModel.EditorBrowsableState.Never)]
public TestDescendantsObjectType ObjectType { get; }
/// <summary>
/// Gets or Sets additional properties
/// </summary>
[JsonExtensionData]
public Dictionary<string, JsonElement> AdditionalProperties { get; } = new Dictionary<string, JsonElement>();
/// <summary>
/// Returns the string presentation of the object
/// </summary>
/// <returns>String presentation of the object</returns>
public override string ToString()
{
StringBuilder sb = new StringBuilder();
sb.Append("class TestDescendants {\n");
sb.Append(" AlternativeName: ").Append(AlternativeName).Append("\n");
sb.Append(" AdditionalProperties: ").Append(AdditionalProperties).Append("\n");
sb.Append("}\n");
return sb.ToString();
}
/// <summary>
/// To validate all properties of the instance
/// </summary>
/// <param name="validationContext">Validation context</param>
/// <returns>Validation Result</returns>
IEnumerable<ValidationResult> IValidatableObject.Validate(ValidationContext validationContext)
{
return this.BaseValidate(validationContext);
}
/// <summary>
/// To validate all properties of the instance
/// </summary>
/// <param name="validationContext">Validation context</param>
/// <returns>Validation Result</returns>
protected IEnumerable<ValidationResult> BaseValidate(ValidationContext validationContext)
{
yield break;
}
}
/// <summary>
/// A Json converter for type <see cref="TestDescendants" />
/// </summary>
public class TestDescendantsJsonConverter : JsonConverter<TestDescendants>
{
/// <summary>
/// Deserializes json to <see cref="TestDescendants" />
/// </summary>
/// <param name="utf8JsonReader"></param>
/// <param name="typeToConvert"></param>
/// <param name="jsonSerializerOptions"></param>
/// <returns></returns>
/// <exception cref="JsonException"></exception>
public override TestDescendants Read(ref Utf8JsonReader utf8JsonReader, Type typeToConvert, JsonSerializerOptions jsonSerializerOptions)
{
int currentDepth = utf8JsonReader.CurrentDepth;
if (utf8JsonReader.TokenType != JsonTokenType.StartObject && utf8JsonReader.TokenType != JsonTokenType.StartArray)
throw new JsonException();
JsonTokenType startingTokenType = utf8JsonReader.TokenType;
Option<string> alternativeName = default;
Option<TestDescendantsObjectType?> objectType = default;
string discriminator = ClientUtils.GetDiscriminator(utf8JsonReader, "objectType");
if (discriminator != null && discriminator.Equals("Descendant1"))
return JsonSerializer.Deserialize<Descendant1>(ref utf8JsonReader, jsonSerializerOptions) ?? throw new JsonException("The result was an unexpected value.");
if (discriminator != null && discriminator.Equals("Descendant2"))
return JsonSerializer.Deserialize<Descendant2>(ref utf8JsonReader, jsonSerializerOptions) ?? throw new JsonException("The result was an unexpected value.");
while (utf8JsonReader.Read())
{
if (startingTokenType == JsonTokenType.StartObject && utf8JsonReader.TokenType == JsonTokenType.EndObject && currentDepth == utf8JsonReader.CurrentDepth)
break;
if (startingTokenType == JsonTokenType.StartArray && utf8JsonReader.TokenType == JsonTokenType.EndArray && currentDepth == utf8JsonReader.CurrentDepth)
break;
if (utf8JsonReader.TokenType == JsonTokenType.PropertyName && currentDepth == utf8JsonReader.CurrentDepth - 1)
{
string localVarJsonPropertyName = utf8JsonReader.GetString();
utf8JsonReader.Read();
switch (localVarJsonPropertyName)
{
case "alternativeName":
alternativeName = new Option<string>(utf8JsonReader.GetString());
break;
case "objectType":
string objectTypeRawValue = utf8JsonReader.GetString();
if (objectTypeRawValue != null)
objectType = new Option<TestDescendantsObjectType?>(TestDescendantsObjectTypeValueConverter.FromStringOrDefault(objectTypeRawValue));
break;
default:
break;
}
}
}
if (!alternativeName.IsSet)
throw new ArgumentException("Property is required for class TestDescendants.", nameof(alternativeName));
if (!objectType.IsSet)
throw new ArgumentException("Property is required for class TestDescendants.", nameof(objectType));
if (alternativeName.IsSet && alternativeName.Value == null)
throw new ArgumentNullException(nameof(alternativeName), "Property is not nullable for class TestDescendants.");
if (objectType.IsSet && objectType.Value == null)
throw new ArgumentNullException(nameof(objectType), "Property is not nullable for class TestDescendants.");
return new TestDescendants(alternativeName.Value);
}
/// <summary>
/// Serializes a <see cref="TestDescendants" />
/// </summary>
/// <param name="writer"></param>
/// <param name="testDescendants"></param>
/// <param name="jsonSerializerOptions"></param>
/// <exception cref="NotImplementedException"></exception>
public override void Write(Utf8JsonWriter writer, TestDescendants testDescendants, JsonSerializerOptions jsonSerializerOptions)
{
if (testDescendants is Descendant1 descendant1){
JsonSerializer.Serialize<Descendant1>(writer, descendant1, jsonSerializerOptions);
return;
}
if (testDescendants is Descendant2 descendant2){
JsonSerializer.Serialize<Descendant2>(writer, descendant2, jsonSerializerOptions);
return;
}
writer.WriteStartObject();
WriteProperties(writer, testDescendants, jsonSerializerOptions);
writer.WriteEndObject();
}
/// <summary>
/// Serializes the properties of <see cref="TestDescendants" />
/// </summary>
/// <param name="writer"></param>
/// <param name="testDescendants"></param>
/// <param name="jsonSerializerOptions"></param>
/// <exception cref="NotImplementedException"></exception>
public void WriteProperties(Utf8JsonWriter writer, TestDescendants testDescendants, JsonSerializerOptions jsonSerializerOptions)
{
if (testDescendants.AlternativeName == null)
throw new ArgumentNullException(nameof(testDescendants.AlternativeName), "Property is required for class TestDescendants.");
writer.WriteString("alternativeName", testDescendants.AlternativeName);
writer.WriteString("objectType", TestDescendantsObjectTypeValueConverter.ToJsonValue(testDescendants.ObjectType));
}
}
}

View File

@ -0,0 +1,174 @@
// <auto-generated>
/*
* OpenAPI Petstore
*
* This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\
*
* The version of the OpenAPI document: 1.0.0
* Generated by: https://github.com/openapitools/openapi-generator.git
*/
using System;
using System.Collections;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Linq;
using System.IO;
using System.Text;
using System.Text.RegularExpressions;
using System.Text.Json;
using System.Text.Json.Serialization;
using System.ComponentModel.DataAnnotations;
using OpenAPIClientUtils = Org.OpenAPITools.Client.ClientUtils;
using Org.OpenAPITools.Client;
namespace Org.OpenAPITools.Model
{
/// <summary>
/// Defines TestDescendants_objectType
/// </summary>
public enum TestDescendantsObjectType
{
/// <summary>
/// Enum Descendant1 for value: Descendant1
/// </summary>
Descendant1 = 1,
/// <summary>
/// Enum Descendant2 for value: Descendant2
/// </summary>
Descendant2 = 2
}
/// <summary>
/// Converts <see cref="TestDescendantsObjectType"/> to and from the JSON value
/// </summary>
public static class TestDescendantsObjectTypeValueConverter
{
/// <summary>
/// Parses a given value to <see cref="TestDescendantsObjectType"/>
/// </summary>
/// <param name="value"></param>
/// <returns></returns>
public static TestDescendantsObjectType FromString(string value)
{
if (value.Equals("Descendant1"))
return TestDescendantsObjectType.Descendant1;
if (value.Equals("Descendant2"))
return TestDescendantsObjectType.Descendant2;
throw new NotImplementedException($"Could not convert value to type TestDescendantsObjectType: '{value}'");
}
/// <summary>
/// Parses a given value to <see cref="TestDescendantsObjectType"/>
/// </summary>
/// <param name="value"></param>
/// <returns></returns>
public static TestDescendantsObjectType? FromStringOrDefault(string value)
{
if (value.Equals("Descendant1"))
return TestDescendantsObjectType.Descendant1;
if (value.Equals("Descendant2"))
return TestDescendantsObjectType.Descendant2;
return null;
}
/// <summary>
/// Converts the <see cref="TestDescendantsObjectType"/> to the json value
/// </summary>
/// <param name="value"></param>
/// <returns></returns>
/// <exception cref="NotImplementedException"></exception>
public static string ToJsonValue(TestDescendantsObjectType value)
{
if (value == TestDescendantsObjectType.Descendant1)
return "Descendant1";
if (value == TestDescendantsObjectType.Descendant2)
return "Descendant2";
throw new NotImplementedException($"Value could not be handled: '{value}'");
}
}
/// <summary>
/// A Json converter for type <see cref="TestDescendantsObjectType"/>
/// </summary>
/// <exception cref="NotImplementedException"></exception>
public class TestDescendantsObjectTypeJsonConverter : JsonConverter<TestDescendantsObjectType>
{
/// <summary>
/// Returns a from the Json object
/// </summary>
/// <param name="reader"></param>
/// <param name="typeToConvert"></param>
/// <param name="options"></param>
/// <returns></returns>
public override TestDescendantsObjectType Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
{
string rawValue = reader.GetString();
TestDescendantsObjectType? result = rawValue == null
? null
: TestDescendantsObjectTypeValueConverter.FromStringOrDefault(rawValue);
if (result != null)
return result.Value;
throw new JsonException();
}
/// <summary>
/// Writes the TestDescendantsObjectType to the json writer
/// </summary>
/// <param name="writer"></param>
/// <param name="testDescendantsObjectType"></param>
/// <param name="options"></param>
public override void Write(Utf8JsonWriter writer, TestDescendantsObjectType testDescendantsObjectType, JsonSerializerOptions options)
{
writer.WriteStringValue(testDescendantsObjectType.ToString());
}
}
/// <summary>
/// A Json converter for type <see cref="TestDescendantsObjectType"/>
/// </summary>
public class TestDescendantsObjectTypeNullableJsonConverter : JsonConverter<TestDescendantsObjectType?>
{
/// <summary>
/// Returns a TestDescendantsObjectType from the Json object
/// </summary>
/// <param name="reader"></param>
/// <param name="typeToConvert"></param>
/// <param name="options"></param>
/// <returns></returns>
public override TestDescendantsObjectType? Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
{
string rawValue = reader.GetString();
TestDescendantsObjectType? result = rawValue == null
? null
: TestDescendantsObjectTypeValueConverter.FromStringOrDefault(rawValue);
if (result != null)
return result.Value;
throw new JsonException();
}
/// <summary>
/// Writes the DateTime to the json writer
/// </summary>
/// <param name="writer"></param>
/// <param name="testDescendantsObjectType"></param>
/// <param name="options"></param>
public override void Write(Utf8JsonWriter writer, TestDescendantsObjectType? testDescendantsObjectType, JsonSerializerOptions options)
{
writer.WriteStringValue(testDescendantsObjectType?.ToString() ?? "null");
}
}
}

View File

@ -33,6 +33,8 @@ docs/models/CopyActivity.md
docs/models/DanishPig.md
docs/models/DateOnlyClass.md
docs/models/DeprecatedObject.md
docs/models/Descendant1.md
docs/models/Descendant2.md
docs/models/Dog.md
docs/models/Drawing.md
docs/models/EntityBase.md
@ -100,6 +102,7 @@ docs/models/SpecialModelName.md
docs/models/Tag.md
docs/models/TestCollectionEndingWithWordList.md
docs/models/TestCollectionEndingWithWordListObject.md
docs/models/TestDescendants.md
docs/models/TestInlineFreeformAdditionalPropertiesRequest.md
docs/models/TestResult.md
docs/models/TestResultCode.md
@ -171,6 +174,8 @@ src/Org.OpenAPITools/Model/CopyActivity.cs
src/Org.OpenAPITools/Model/DanishPig.cs
src/Org.OpenAPITools/Model/DateOnlyClass.cs
src/Org.OpenAPITools/Model/DeprecatedObject.cs
src/Org.OpenAPITools/Model/Descendant1.cs
src/Org.OpenAPITools/Model/Descendant2.cs
src/Org.OpenAPITools/Model/Dog.cs
src/Org.OpenAPITools/Model/Drawing.cs
src/Org.OpenAPITools/Model/EntityBase.cs
@ -238,6 +243,7 @@ src/Org.OpenAPITools/Model/SpecialModelName.cs
src/Org.OpenAPITools/Model/Tag.cs
src/Org.OpenAPITools/Model/TestCollectionEndingWithWordList.cs
src/Org.OpenAPITools/Model/TestCollectionEndingWithWordListObject.cs
src/Org.OpenAPITools/Model/TestDescendants.cs
src/Org.OpenAPITools/Model/TestInlineFreeformAdditionalPropertiesRequest.cs
src/Org.OpenAPITools/Model/TestResult.cs
src/Org.OpenAPITools/Model/TestResultCode.cs

View File

@ -2770,6 +2770,40 @@ components:
properties:
id:
type: string
Descendant1:
allOf:
- $ref: '#/components/schemas/TestDescendants'
- properties:
descendantName:
type: string
required:
- descendantName
type: object
Descendant2:
allOf:
- $ref: '#/components/schemas/TestDescendants'
- properties:
confidentiality:
type: string
required:
- confidentiality
type: object
TestDescendants:
description: ""
discriminator:
propertyName: objectType
properties:
alternativeName:
type: string
objectType:
enum:
- Descendant1
- Descendant2
type: string
required:
- alternativeName
- objectType
type: object
CopyActivity:
allOf:
- $ref: '#/components/schemas/EntityBase'

View File

@ -0,0 +1,12 @@
# Org.OpenAPITools.Model.Descendant1
## Properties
Name | Type | Description | Notes
------------ | ------------- | ------------- | -------------
**AlternativeName** | **string** | |
**ObjectType** | **string** | |
**DescendantName** | **string** | |
[[Back to Model list]](../../README.md#documentation-for-models) [[Back to API list]](../../README.md#documentation-for-api-endpoints) [[Back to README]](../../README.md)

View File

@ -0,0 +1,12 @@
# Org.OpenAPITools.Model.Descendant2
## Properties
Name | Type | Description | Notes
------------ | ------------- | ------------- | -------------
**AlternativeName** | **string** | |
**ObjectType** | **string** | |
**Confidentiality** | **string** | |
[[Back to Model list]](../../README.md#documentation-for-models) [[Back to API list]](../../README.md#documentation-for-api-endpoints) [[Back to README]](../../README.md)

View File

@ -0,0 +1,11 @@
# Org.OpenAPITools.Model.TestDescendants
## Properties
Name | Type | Description | Notes
------------ | ------------- | ------------- | -------------
**AlternativeName** | **string** | |
**ObjectType** | **string** | |
[[Back to Model list]](../../README.md#documentation-for-models) [[Back to API list]](../../README.md#documentation-for-api-endpoints) [[Back to README]](../../README.md)

View File

@ -0,0 +1,65 @@
/*
* OpenAPI Petstore
*
* This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\
*
* The version of the OpenAPI document: 1.0.0
* Generated by: https://github.com/openapitools/openapi-generator.git
*/
using Xunit;
using System;
using System.Linq;
using System.IO;
using System.Collections.Generic;
using Org.OpenAPITools.Model;
using Org.OpenAPITools.Client;
using System.Reflection;
namespace Org.OpenAPITools.Test.Model
{
/// <summary>
/// Class for testing Descendant1
/// </summary>
/// <remarks>
/// This file is automatically generated by OpenAPI Generator (https://openapi-generator.tech).
/// Please update the test case below to test the model.
/// </remarks>
public class Descendant1Tests : IDisposable
{
// TODO uncomment below to declare an instance variable for Descendant1
//private Descendant1 instance;
public Descendant1Tests()
{
// TODO uncomment below to create an instance of Descendant1
//instance = new Descendant1();
}
public void Dispose()
{
// Cleanup when everything is done.
}
/// <summary>
/// Test an instance of Descendant1
/// </summary>
[Fact]
public void Descendant1InstanceTest()
{
// TODO uncomment below to test "IsType" Descendant1
//Assert.IsType<Descendant1>(instance);
}
/// <summary>
/// Test the property 'DescendantName'
/// </summary>
[Fact]
public void DescendantNameTest()
{
// TODO unit test for the property 'DescendantName'
}
}
}

View File

@ -0,0 +1,65 @@
/*
* OpenAPI Petstore
*
* This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\
*
* The version of the OpenAPI document: 1.0.0
* Generated by: https://github.com/openapitools/openapi-generator.git
*/
using Xunit;
using System;
using System.Linq;
using System.IO;
using System.Collections.Generic;
using Org.OpenAPITools.Model;
using Org.OpenAPITools.Client;
using System.Reflection;
namespace Org.OpenAPITools.Test.Model
{
/// <summary>
/// Class for testing Descendant2
/// </summary>
/// <remarks>
/// This file is automatically generated by OpenAPI Generator (https://openapi-generator.tech).
/// Please update the test case below to test the model.
/// </remarks>
public class Descendant2Tests : IDisposable
{
// TODO uncomment below to declare an instance variable for Descendant2
//private Descendant2 instance;
public Descendant2Tests()
{
// TODO uncomment below to create an instance of Descendant2
//instance = new Descendant2();
}
public void Dispose()
{
// Cleanup when everything is done.
}
/// <summary>
/// Test an instance of Descendant2
/// </summary>
[Fact]
public void Descendant2InstanceTest()
{
// TODO uncomment below to test "IsType" Descendant2
//Assert.IsType<Descendant2>(instance);
}
/// <summary>
/// Test the property 'Confidentiality'
/// </summary>
[Fact]
public void ConfidentialityTest()
{
// TODO unit test for the property 'Confidentiality'
}
}
}

View File

@ -0,0 +1,94 @@
/*
* OpenAPI Petstore
*
* This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\
*
* The version of the OpenAPI document: 1.0.0
* Generated by: https://github.com/openapitools/openapi-generator.git
*/
using Xunit;
using System;
using System.Linq;
using System.IO;
using System.Collections.Generic;
using Org.OpenAPITools.Model;
using Org.OpenAPITools.Client;
using System.Reflection;
namespace Org.OpenAPITools.Test.Model
{
/// <summary>
/// Class for testing TestDescendants
/// </summary>
/// <remarks>
/// This file is automatically generated by OpenAPI Generator (https://openapi-generator.tech).
/// Please update the test case below to test the model.
/// </remarks>
public class TestDescendantsTests : IDisposable
{
// TODO uncomment below to declare an instance variable for TestDescendants
//private TestDescendants instance;
public TestDescendantsTests()
{
// TODO uncomment below to create an instance of TestDescendants
//instance = new TestDescendants();
}
public void Dispose()
{
// Cleanup when everything is done.
}
/// <summary>
/// Test an instance of TestDescendants
/// </summary>
[Fact]
public void TestDescendantsInstanceTest()
{
// TODO uncomment below to test "IsType" TestDescendants
//Assert.IsType<TestDescendants>(instance);
}
/// <summary>
/// Test deserialize a Descendant1 from type TestDescendants
/// </summary>
[Fact]
public void Descendant1DeserializeFromTestDescendantsTest()
{
// TODO uncomment below to test deserialize a Descendant1 from type TestDescendants
//Assert.IsType<TestDescendants>(JsonConvert.DeserializeObject<TestDescendants>(new Descendant1().ToJson()));
}
/// <summary>
/// Test deserialize a Descendant2 from type TestDescendants
/// </summary>
[Fact]
public void Descendant2DeserializeFromTestDescendantsTest()
{
// TODO uncomment below to test deserialize a Descendant2 from type TestDescendants
//Assert.IsType<TestDescendants>(JsonConvert.DeserializeObject<TestDescendants>(new Descendant2().ToJson()));
}
/// <summary>
/// Test the property 'AlternativeName'
/// </summary>
[Fact]
public void AlternativeNameTest()
{
// TODO unit test for the property 'AlternativeName'
}
/// <summary>
/// Test the property 'ObjectType'
/// </summary>
[Fact]
public void ObjectTypeTest()
{
// TODO unit test for the property 'ObjectType'
}
}
}

View File

@ -227,6 +227,8 @@ namespace Org.OpenAPITools.Client
return RequiredClass.RequiredNullableEnumIntegerOnlyEnumToJsonValue(requiredClassRequiredNullableEnumIntegerOnlyEnum).ToString();
if (obj is RequiredClass.RequiredNullableEnumStringEnum requiredClassRequiredNullableEnumStringEnum)
return RequiredClass.RequiredNullableEnumStringEnumToJsonValue(requiredClassRequiredNullableEnumStringEnum);
if (obj is TestDescendants.ObjectTypeEnum testDescendantsObjectTypeEnum)
return TestDescendants.ObjectTypeEnumToJsonValue(testDescendantsObjectTypeEnum);
if (obj is TestResultCode testResultCode)
return TestResultCodeValueConverter.ToJsonValue(testResultCode);
if (obj is Zebra.TypeEnum zebraTypeEnum)

View File

@ -62,6 +62,8 @@ namespace Org.OpenAPITools.Client
_jsonOptions.Converters.Add(new DanishPigJsonConverter());
_jsonOptions.Converters.Add(new DateOnlyClassJsonConverter());
_jsonOptions.Converters.Add(new DeprecatedObjectJsonConverter());
_jsonOptions.Converters.Add(new Descendant1JsonConverter());
_jsonOptions.Converters.Add(new Descendant2JsonConverter());
_jsonOptions.Converters.Add(new DogJsonConverter());
_jsonOptions.Converters.Add(new DrawingJsonConverter());
_jsonOptions.Converters.Add(new EntityBaseJsonConverter());
@ -135,6 +137,7 @@ namespace Org.OpenAPITools.Client
_jsonOptions.Converters.Add(new TagJsonConverter());
_jsonOptions.Converters.Add(new TestCollectionEndingWithWordListJsonConverter());
_jsonOptions.Converters.Add(new TestCollectionEndingWithWordListObjectJsonConverter());
_jsonOptions.Converters.Add(new TestDescendantsJsonConverter());
_jsonOptions.Converters.Add(new TestInlineFreeformAdditionalPropertiesRequestJsonConverter());
_jsonOptions.Converters.Add(new TestResultJsonConverter());
_jsonOptions.Converters.Add(new TestResultCodeJsonConverter());

View File

@ -36,6 +36,7 @@ namespace Org.OpenAPITools.Model
[JsonConstructor]
public Animal(Option<string> color = default)
{
ClassName = this.GetType().Name;
ColorOption = color;
OnCreated();
}
@ -47,7 +48,7 @@ namespace Org.OpenAPITools.Model
/// </summary>
[JsonIgnore]
[global::System.ComponentModel.EditorBrowsable(global::System.ComponentModel.EditorBrowsableState.Never)]
public string ClassName { get; } = "Animal";
public string ClassName { get; }
/// <summary>
/// Used to track the state of Color

View File

@ -43,13 +43,6 @@ namespace Org.OpenAPITools.Model
partial void OnCreated();
/// <summary>
/// The discriminator
/// </summary>
[JsonIgnore]
[global::System.ComponentModel.EditorBrowsable(global::System.ComponentModel.EditorBrowsableState.Never)]
public new string ClassName { get; } = "Cat";
/// <summary>
/// Used to track the state of Declawed
/// </summary>

View File

@ -37,6 +37,7 @@ namespace Org.OpenAPITools.Model
public ChildCat(Option<string> name = default) : base()
{
NameOption = name;
PetType = (PetTypeEnum)Enum.Parse(typeof(PetTypeEnum), this.GetType().Name);
OnCreated();
}
@ -112,7 +113,7 @@ namespace Org.OpenAPITools.Model
/// </summary>
[JsonIgnore]
[global::System.ComponentModel.EditorBrowsable(global::System.ComponentModel.EditorBrowsableState.Never)]
public new PetTypeEnum PetType { get; } = (PetTypeEnum)Enum.Parse(typeof(PetTypeEnum), "ChildCat");
public new PetTypeEnum PetType { get; }
/// <summary>
/// Returns the string presentation of the object

View File

@ -36,6 +36,7 @@ namespace Org.OpenAPITools.Model
[JsonConstructor]
public CopyActivity(string copyActivitytt) : base()
{
Schema = (SchemaEnum)Enum.Parse(typeof(SchemaEnum), this.GetType().Name);
CopyActivitytt = copyActivitytt;
OnCreated();
}
@ -99,7 +100,7 @@ namespace Org.OpenAPITools.Model
/// </summary>
[JsonIgnore]
[global::System.ComponentModel.EditorBrowsable(global::System.ComponentModel.EditorBrowsableState.Never)]
public new SchemaEnum Schema { get; } = (SchemaEnum)Enum.Parse(typeof(SchemaEnum), "CopyActivity");
public new SchemaEnum Schema { get; }
/// <summary>
/// Gets or Sets CopyActivitytt

View File

@ -0,0 +1,183 @@
// <auto-generated>
/*
* OpenAPI Petstore
*
* This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\
*
* The version of the OpenAPI document: 1.0.0
* Generated by: https://github.com/openapitools/openapi-generator.git
*/
using System;
using System.Collections;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Linq;
using System.IO;
using System.Text;
using System.Text.RegularExpressions;
using System.Text.Json;
using System.Text.Json.Serialization;
using System.ComponentModel.DataAnnotations;
using OpenAPIClientUtils = Org.OpenAPITools.Client.ClientUtils;
using Org.OpenAPITools.Client;
namespace Org.OpenAPITools.Model
{
/// <summary>
/// Descendant1
/// </summary>
public partial class Descendant1 : TestDescendants, IValidatableObject
{
/// <summary>
/// Initializes a new instance of the <see cref="Descendant1" /> class.
/// </summary>
/// <param name="alternativeName">alternativeName</param>
/// <param name="descendantName">descendantName</param>
[JsonConstructor]
public Descendant1(string alternativeName, string descendantName) : base(alternativeName)
{
DescendantName = descendantName;
OnCreated();
}
partial void OnCreated();
/// <summary>
/// Gets or Sets DescendantName
/// </summary>
[JsonPropertyName("descendantName")]
public string DescendantName { get; set; }
/// <summary>
/// Returns the string presentation of the object
/// </summary>
/// <returns>String presentation of the object</returns>
public override string ToString()
{
StringBuilder sb = new StringBuilder();
sb.Append("class Descendant1 {\n");
sb.Append(" ").Append(base.ToString()?.Replace("\n", "\n ")).Append("\n");
sb.Append(" DescendantName: ").Append(DescendantName).Append("\n");
sb.Append("}\n");
return sb.ToString();
}
}
/// <summary>
/// A Json converter for type <see cref="Descendant1" />
/// </summary>
public class Descendant1JsonConverter : JsonConverter<Descendant1>
{
/// <summary>
/// Deserializes json to <see cref="Descendant1" />
/// </summary>
/// <param name="utf8JsonReader"></param>
/// <param name="typeToConvert"></param>
/// <param name="jsonSerializerOptions"></param>
/// <returns></returns>
/// <exception cref="JsonException"></exception>
public override Descendant1 Read(ref Utf8JsonReader utf8JsonReader, Type typeToConvert, JsonSerializerOptions jsonSerializerOptions)
{
int currentDepth = utf8JsonReader.CurrentDepth;
if (utf8JsonReader.TokenType != JsonTokenType.StartObject && utf8JsonReader.TokenType != JsonTokenType.StartArray)
throw new JsonException();
JsonTokenType startingTokenType = utf8JsonReader.TokenType;
Option<string> alternativeName = default;
Option<string> descendantName = default;
Option<Descendant1.ObjectTypeEnum?> objectType = default;
while (utf8JsonReader.Read())
{
if (startingTokenType == JsonTokenType.StartObject && utf8JsonReader.TokenType == JsonTokenType.EndObject && currentDepth == utf8JsonReader.CurrentDepth)
break;
if (startingTokenType == JsonTokenType.StartArray && utf8JsonReader.TokenType == JsonTokenType.EndArray && currentDepth == utf8JsonReader.CurrentDepth)
break;
if (utf8JsonReader.TokenType == JsonTokenType.PropertyName && currentDepth == utf8JsonReader.CurrentDepth - 1)
{
string localVarJsonPropertyName = utf8JsonReader.GetString();
utf8JsonReader.Read();
switch (localVarJsonPropertyName)
{
case "alternativeName":
alternativeName = new Option<string>(utf8JsonReader.GetString());
break;
case "descendantName":
descendantName = new Option<string>(utf8JsonReader.GetString());
break;
case "objectType":
string objectTypeRawValue = utf8JsonReader.GetString();
if (objectTypeRawValue != null)
objectType = new Option<Descendant1.ObjectTypeEnum?>(Descendant1.ObjectTypeEnumFromStringOrDefault(objectTypeRawValue));
break;
default:
break;
}
}
}
if (!alternativeName.IsSet)
throw new ArgumentException("Property is required for class Descendant1.", nameof(alternativeName));
if (!descendantName.IsSet)
throw new ArgumentException("Property is required for class Descendant1.", nameof(descendantName));
if (!objectType.IsSet)
throw new ArgumentException("Property is required for class Descendant1.", nameof(objectType));
if (alternativeName.IsSet && alternativeName.Value == null)
throw new ArgumentNullException(nameof(alternativeName), "Property is not nullable for class Descendant1.");
if (descendantName.IsSet && descendantName.Value == null)
throw new ArgumentNullException(nameof(descendantName), "Property is not nullable for class Descendant1.");
if (objectType.IsSet && objectType.Value == null)
throw new ArgumentNullException(nameof(objectType), "Property is not nullable for class Descendant1.");
return new Descendant1(alternativeName.Value, descendantName.Value);
}
/// <summary>
/// Serializes a <see cref="Descendant1" />
/// </summary>
/// <param name="writer"></param>
/// <param name="descendant1"></param>
/// <param name="jsonSerializerOptions"></param>
/// <exception cref="NotImplementedException"></exception>
public override void Write(Utf8JsonWriter writer, Descendant1 descendant1, JsonSerializerOptions jsonSerializerOptions)
{
writer.WriteStartObject();
WriteProperties(writer, descendant1, jsonSerializerOptions);
writer.WriteEndObject();
}
/// <summary>
/// Serializes the properties of <see cref="Descendant1" />
/// </summary>
/// <param name="writer"></param>
/// <param name="descendant1"></param>
/// <param name="jsonSerializerOptions"></param>
/// <exception cref="NotImplementedException"></exception>
public void WriteProperties(Utf8JsonWriter writer, Descendant1 descendant1, JsonSerializerOptions jsonSerializerOptions)
{
if (descendant1.AlternativeName == null)
throw new ArgumentNullException(nameof(descendant1.AlternativeName), "Property is required for class Descendant1.");
if (descendant1.DescendantName == null)
throw new ArgumentNullException(nameof(descendant1.DescendantName), "Property is required for class Descendant1.");
writer.WriteString("alternativeName", descendant1.AlternativeName);
writer.WriteString("descendantName", descendant1.DescendantName);
writer.WriteString("objectType", Descendant1.ObjectTypeEnumToJsonValue(descendant1.ObjectType));
}
}
}

View File

@ -0,0 +1,183 @@
// <auto-generated>
/*
* OpenAPI Petstore
*
* This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\
*
* The version of the OpenAPI document: 1.0.0
* Generated by: https://github.com/openapitools/openapi-generator.git
*/
using System;
using System.Collections;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Linq;
using System.IO;
using System.Text;
using System.Text.RegularExpressions;
using System.Text.Json;
using System.Text.Json.Serialization;
using System.ComponentModel.DataAnnotations;
using OpenAPIClientUtils = Org.OpenAPITools.Client.ClientUtils;
using Org.OpenAPITools.Client;
namespace Org.OpenAPITools.Model
{
/// <summary>
/// Descendant2
/// </summary>
public partial class Descendant2 : TestDescendants, IValidatableObject
{
/// <summary>
/// Initializes a new instance of the <see cref="Descendant2" /> class.
/// </summary>
/// <param name="alternativeName">alternativeName</param>
/// <param name="confidentiality">confidentiality</param>
[JsonConstructor]
public Descendant2(string alternativeName, string confidentiality) : base(alternativeName)
{
Confidentiality = confidentiality;
OnCreated();
}
partial void OnCreated();
/// <summary>
/// Gets or Sets Confidentiality
/// </summary>
[JsonPropertyName("confidentiality")]
public string Confidentiality { get; set; }
/// <summary>
/// Returns the string presentation of the object
/// </summary>
/// <returns>String presentation of the object</returns>
public override string ToString()
{
StringBuilder sb = new StringBuilder();
sb.Append("class Descendant2 {\n");
sb.Append(" ").Append(base.ToString()?.Replace("\n", "\n ")).Append("\n");
sb.Append(" Confidentiality: ").Append(Confidentiality).Append("\n");
sb.Append("}\n");
return sb.ToString();
}
}
/// <summary>
/// A Json converter for type <see cref="Descendant2" />
/// </summary>
public class Descendant2JsonConverter : JsonConverter<Descendant2>
{
/// <summary>
/// Deserializes json to <see cref="Descendant2" />
/// </summary>
/// <param name="utf8JsonReader"></param>
/// <param name="typeToConvert"></param>
/// <param name="jsonSerializerOptions"></param>
/// <returns></returns>
/// <exception cref="JsonException"></exception>
public override Descendant2 Read(ref Utf8JsonReader utf8JsonReader, Type typeToConvert, JsonSerializerOptions jsonSerializerOptions)
{
int currentDepth = utf8JsonReader.CurrentDepth;
if (utf8JsonReader.TokenType != JsonTokenType.StartObject && utf8JsonReader.TokenType != JsonTokenType.StartArray)
throw new JsonException();
JsonTokenType startingTokenType = utf8JsonReader.TokenType;
Option<string> alternativeName = default;
Option<string> confidentiality = default;
Option<Descendant2.ObjectTypeEnum?> objectType = default;
while (utf8JsonReader.Read())
{
if (startingTokenType == JsonTokenType.StartObject && utf8JsonReader.TokenType == JsonTokenType.EndObject && currentDepth == utf8JsonReader.CurrentDepth)
break;
if (startingTokenType == JsonTokenType.StartArray && utf8JsonReader.TokenType == JsonTokenType.EndArray && currentDepth == utf8JsonReader.CurrentDepth)
break;
if (utf8JsonReader.TokenType == JsonTokenType.PropertyName && currentDepth == utf8JsonReader.CurrentDepth - 1)
{
string localVarJsonPropertyName = utf8JsonReader.GetString();
utf8JsonReader.Read();
switch (localVarJsonPropertyName)
{
case "alternativeName":
alternativeName = new Option<string>(utf8JsonReader.GetString());
break;
case "confidentiality":
confidentiality = new Option<string>(utf8JsonReader.GetString());
break;
case "objectType":
string objectTypeRawValue = utf8JsonReader.GetString();
if (objectTypeRawValue != null)
objectType = new Option<Descendant2.ObjectTypeEnum?>(Descendant2.ObjectTypeEnumFromStringOrDefault(objectTypeRawValue));
break;
default:
break;
}
}
}
if (!alternativeName.IsSet)
throw new ArgumentException("Property is required for class Descendant2.", nameof(alternativeName));
if (!confidentiality.IsSet)
throw new ArgumentException("Property is required for class Descendant2.", nameof(confidentiality));
if (!objectType.IsSet)
throw new ArgumentException("Property is required for class Descendant2.", nameof(objectType));
if (alternativeName.IsSet && alternativeName.Value == null)
throw new ArgumentNullException(nameof(alternativeName), "Property is not nullable for class Descendant2.");
if (confidentiality.IsSet && confidentiality.Value == null)
throw new ArgumentNullException(nameof(confidentiality), "Property is not nullable for class Descendant2.");
if (objectType.IsSet && objectType.Value == null)
throw new ArgumentNullException(nameof(objectType), "Property is not nullable for class Descendant2.");
return new Descendant2(alternativeName.Value, confidentiality.Value);
}
/// <summary>
/// Serializes a <see cref="Descendant2" />
/// </summary>
/// <param name="writer"></param>
/// <param name="descendant2"></param>
/// <param name="jsonSerializerOptions"></param>
/// <exception cref="NotImplementedException"></exception>
public override void Write(Utf8JsonWriter writer, Descendant2 descendant2, JsonSerializerOptions jsonSerializerOptions)
{
writer.WriteStartObject();
WriteProperties(writer, descendant2, jsonSerializerOptions);
writer.WriteEndObject();
}
/// <summary>
/// Serializes the properties of <see cref="Descendant2" />
/// </summary>
/// <param name="writer"></param>
/// <param name="descendant2"></param>
/// <param name="jsonSerializerOptions"></param>
/// <exception cref="NotImplementedException"></exception>
public void WriteProperties(Utf8JsonWriter writer, Descendant2 descendant2, JsonSerializerOptions jsonSerializerOptions)
{
if (descendant2.AlternativeName == null)
throw new ArgumentNullException(nameof(descendant2.AlternativeName), "Property is required for class Descendant2.");
if (descendant2.Confidentiality == null)
throw new ArgumentNullException(nameof(descendant2.Confidentiality), "Property is required for class Descendant2.");
writer.WriteString("alternativeName", descendant2.AlternativeName);
writer.WriteString("confidentiality", descendant2.Confidentiality);
writer.WriteString("objectType", Descendant2.ObjectTypeEnumToJsonValue(descendant2.ObjectType));
}
}
}

View File

@ -43,13 +43,6 @@ namespace Org.OpenAPITools.Model
partial void OnCreated();
/// <summary>
/// The discriminator
/// </summary>
[JsonIgnore]
[global::System.ComponentModel.EditorBrowsable(global::System.ComponentModel.EditorBrowsableState.Never)]
public new string ClassName { get; } = "Dog";
/// <summary>
/// Used to track the state of Breed
/// </summary>

View File

@ -35,6 +35,7 @@ namespace Org.OpenAPITools.Model
[JsonConstructor]
public EntityBase()
{
Schema = this.GetType().Name;
OnCreated();
}
@ -45,7 +46,7 @@ namespace Org.OpenAPITools.Model
/// </summary>
[JsonIgnore]
[global::System.ComponentModel.EditorBrowsable(global::System.ComponentModel.EditorBrowsableState.Never)]
public string Schema { get; } = "EntityBase";
public string Schema { get; }
/// <summary>
/// Gets or Sets additional properties

View File

@ -35,6 +35,7 @@ namespace Org.OpenAPITools.Model
[JsonConstructor]
public GrandparentAnimal()
{
PetType = this.GetType().Name;
OnCreated();
}
@ -45,7 +46,7 @@ namespace Org.OpenAPITools.Model
/// </summary>
[JsonIgnore]
[global::System.ComponentModel.EditorBrowsable(global::System.ComponentModel.EditorBrowsableState.Never)]
public string PetType { get; } = "GrandparentAnimal";
public string PetType { get; }
/// <summary>
/// Gets or Sets additional properties

Some files were not shown because too many files have changed in this diff Show More