diff --git a/src/NJsonSchema.CodeGeneration.CSharp/CSharpValueGenerator.cs b/src/NJsonSchema.CodeGeneration.CSharp/CSharpValueGenerator.cs index ae4dc542d..6c21eb7fc 100644 --- a/src/NJsonSchema.CodeGeneration.CSharp/CSharpValueGenerator.cs +++ b/src/NJsonSchema.CodeGeneration.CSharp/CSharpValueGenerator.cs @@ -74,7 +74,7 @@ public override string GetDefaultValue(JsonSchema schema, bool allowsNull, strin ? _settings.ArrayInstanceType + targetType.Substring(_settings.ArrayType.Length) : targetType; - return $"new {targetType}()"; + return schema.IsAbstract ? null : $"new {targetType}()"; } } } diff --git a/src/NJsonSchema.CodeGeneration.Tests/DefaultValueGeneratorTests.cs b/src/NJsonSchema.CodeGeneration.Tests/DefaultValueGeneratorTests.cs index ceaf3f07e..b277d98f3 100644 --- a/src/NJsonSchema.CodeGeneration.Tests/DefaultValueGeneratorTests.cs +++ b/src/NJsonSchema.CodeGeneration.Tests/DefaultValueGeneratorTests.cs @@ -218,5 +218,32 @@ public void When_schema_has_default_value_of_enum_it_is_generated_in_CSharp_and_ Assert.Equal("Ns.MyEnum.bar", csharpValue); Assert.Equal("MyEnum.bar", typescriptValue); } + + [Fact] + public void When_schema_has_required_abstract_class_it_generates_no_default_value_for_in_CSharp_and_TypeScript() + { + //// Arrange + var csharpSettings = new CSharpGeneratorSettings(); + var csharpGenerator = new CSharpValueGenerator(csharpSettings); + var csharpTypeResolver = new CSharpTypeResolver(csharpSettings); + + //// Act + var schema = new JsonSchema() + { + Type = JsonObjectType.Object, + IsAbstract = true + }; + + var typescriptSettings = new TypeScriptGeneratorSettings(); + var typescriptGenerator = new TypeScriptValueGenerator(typescriptSettings); + var typescriptTypeResolver = new TypeScriptTypeResolver(typescriptSettings); + + var csharpValue = csharpGenerator.GetDefaultValue(schema, false, "BaseClass", "BaseClass", true, csharpTypeResolver); + var typescriptValue = typescriptGenerator.GetDefaultValue(schema, false, "BaseClass", "BaseClass", true, typescriptTypeResolver); + + //// Assert + Assert.Null(csharpValue); + Assert.Null(typescriptValue); + } } }