From e41c3a6b3515ed03e12fa7a0a2e2e50337fd5130 Mon Sep 17 00:00:00 2001 From: Marko Lahma Date: Tue, 19 Nov 2024 19:56:32 +0200 Subject: [PATCH] Use collection expressions --- Directory.Build.props | 5 +---- .../SchemaGenerationBenchmarks.cs | 2 +- .../CSharpJsonSerializerGeneratorTests.cs | 8 ++++---- .../GeneralGeneratorTests.cs | 4 ++-- .../CSharpGeneratorSettings.cs | 5 ++--- .../CSharpJsonSerializerGenerator.cs | 2 +- .../CSharpPropertyNameGenerator.cs | 5 +++-- .../CSharpValueGenerator.cs | 6 +++--- .../EnumGenerationTests.cs | 7 ++++--- .../InheritanceSerializationTests.cs | 20 +++++++++---------- .../LiquidTests.cs | 2 +- .../ExtensionCodeTests.cs | 6 +++--- .../InheritanceTests.cs | 2 +- .../TypeScriptGeneratorSettings.cs | 9 ++++----- .../TypeScriptPropertyNameGenerator.cs | 4 ++-- .../TypeScriptTypeResolver.cs | 2 +- .../CodeArtifactExtensions.cs | 2 +- .../CodeGeneratorSettingsBase.cs | 2 +- .../TypeResolverBase.cs | 2 +- src/NJsonSchema.Demo.Performance/Program.cs | 2 +- .../Converters/JsonExceptionConverter.cs | 6 ++---- .../Converters/JsonInheritanceConverter.cs | 2 +- .../NewtonsoftJsonReflectionService.cs | 2 +- .../Generation/AnnotationsGenerationTests.cs | 2 +- .../Generation/ArrayGenerationTests.cs | 4 ++-- .../Generation/ContractResolverTests.cs | 13 ++++++++---- src/NJsonSchema.Tests/Generation/EnumTests.cs | 4 ++-- .../Generation/InheritanceTests.cs | 6 +++--- .../Generation/KnownTypeGenerationTests.cs | 2 +- .../Generation/XmlObjectTests.cs | 18 ++++++++--------- .../Validation/CustomValidationTests.cs | 5 +++-- .../Validation/FormatBase64Tests.cs | 8 ++++---- .../References/YamlReferencesTests.cs | 2 +- src/NJsonSchema/CompilerFeatures.cs | 4 ++-- src/NJsonSchema/ConversionUtilities.cs | 4 ++-- .../Converters/JsonInheritanceConverter.cs | 2 +- src/NJsonSchema/DefaultTypeNameGenerator.cs | 4 ++-- .../Generation/JsonSchemaGenerator.cs | 2 +- .../Generation/JsonSchemaGeneratorSettings.cs | 2 +- src/NJsonSchema/Infrastructure/DynamicApis.cs | 2 +- ...nameAndIgnoreSerializerContractResolver.cs | 2 +- src/NJsonSchema/JsonPathUtilities.cs | 2 +- src/NJsonSchema/JsonReferenceResolver.cs | 2 +- src/NJsonSchema/JsonSchema.Reference.cs | 4 ++-- src/NJsonSchema/JsonSchema.cs | 7 ++++--- src/NJsonSchema/OpenApiDiscriminator.cs | 4 ++-- .../DateTimeFormatValidator.cs | 5 +++-- .../Validation/JsonSchemaValidatorOptions.cs | 8 ++++---- 48 files changed, 114 insertions(+), 111 deletions(-) diff --git a/Directory.Build.props b/Directory.Build.props index 5d9d23fab..5c13ae385 100644 --- a/Directory.Build.props +++ b/Directory.Build.props @@ -59,9 +59,6 @@ [IDE0160] Convert to block scoped namespace [IDE0260] Use pattern matching [IDE0290] Use primary constructor - [IDE0300] Collection initialization can be simplified - [IDE0301] Collection initialization can be simplified - [IDE0305] Collection initialization can be simplified [IDE1005] Delegate invocation can be simplified [CA1200] Avoid using cref tags with a prefix [CA1510] Use 'ArgumentNullException.ThrowIfNull' instead of explicitly throwing a new exception instance @@ -69,7 +66,7 @@ [CA1720] Identifier 'xxx' contains type name [CA2263] Prefer the generic overload 'System.Enum.GetValues()' --> - $(NoWarn);IDE0005;IDE0008;IDE0019;IDE0021;IDE0022;IDE0025;IDE0027;IDE0028;IDE0029;IDE0032;IDE0039;IDE0045;IDE0046;IDE0055;IDE0057;IDE0059;IDE0060;IDE0074;IDE0078;IDE0083;IDE0090;IDE0100;IDE0130;IDE0160;IDE0260;IDE0290;IDE0300;IDE0301;IDE0305;IDE1005;CA1200;CA1510;CA1716;CA1720;CA2263 + $(NoWarn);IDE0005;IDE0008;IDE0019;IDE0021;IDE0022;IDE0025;IDE0027;IDE0028;IDE0029;IDE0032;IDE0039;IDE0045;IDE0046;IDE0055;IDE0057;IDE0059;IDE0060;IDE0074;IDE0078;IDE0083;IDE0090;IDE0100;IDE0130;IDE0160;IDE0260;IDE0290;IDE1005;CA1200;CA1510;CA1716;CA1720;CA2263 diff --git a/src/NJsonSchema.Benchmark/SchemaGenerationBenchmarks.cs b/src/NJsonSchema.Benchmark/SchemaGenerationBenchmarks.cs index b9ab6021d..2006f8e90 100644 --- a/src/NJsonSchema.Benchmark/SchemaGenerationBenchmarks.cs +++ b/src/NJsonSchema.Benchmark/SchemaGenerationBenchmarks.cs @@ -61,7 +61,7 @@ public class WritingInstrument { public static Type[] GetKnownTypes() { - return new[] { typeof(Pen), typeof(Pencil) }; + return [typeof(Pen), typeof(Pencil)]; } public string Baz { get; set; } diff --git a/src/NJsonSchema.CodeGeneration.CSharp.Tests/CSharpJsonSerializerGeneratorTests.cs b/src/NJsonSchema.CodeGeneration.CSharp.Tests/CSharpJsonSerializerGeneratorTests.cs index 4301c355d..4244eec55 100644 --- a/src/NJsonSchema.CodeGeneration.CSharp.Tests/CSharpJsonSerializerGeneratorTests.cs +++ b/src/NJsonSchema.CodeGeneration.CSharp.Tests/CSharpJsonSerializerGeneratorTests.cs @@ -30,7 +30,7 @@ public void When_using_NewtonsoftJson_with_JsonConverters_GenerateJsonSerializer var settings = new CSharpGeneratorSettings { JsonLibrary = CSharpJsonLibrary.NewtonsoftJson, - JsonConverters = new string[] { "CustomConverter1", "CustomConverter2" } + JsonConverters = ["CustomConverter1", "CustomConverter2"] }; //// Act @@ -68,7 +68,7 @@ public void When_using_NewtonsoftJson_with_HandleReferences_and_JsonConverters_a { JsonLibrary = CSharpJsonLibrary.NewtonsoftJson, HandleReferences = true, - JsonConverters = new string[] { "CustomConverter1", "CustomConverter2" }, + JsonConverters = ["CustomConverter1", "CustomConverter2"], JsonSerializerSettingsTransformationMethod = "TestJsonSerializerSettingsTransformationMethod", }; @@ -88,7 +88,7 @@ public void When_using_SystemTextJson_with_JsonConverters_GenerateJsonConverters var settings = new CSharpGeneratorSettings { JsonLibrary = CSharpJsonLibrary.SystemTextJson, - JsonConverters = new string[] { "CustomConverter1", "CustomConverter2" } + JsonConverters = ["CustomConverter1", "CustomConverter2"] }; //// Act @@ -107,7 +107,7 @@ public void When_using_NewtonsoftJson_with_JsonConverters_GenerateJsonConverters var settings = new CSharpGeneratorSettings { JsonLibrary = CSharpJsonLibrary.NewtonsoftJson, - JsonConverters = new string[] { "CustomConverter1", "CustomConverter2" } + JsonConverters = ["CustomConverter1", "CustomConverter2"] }; //// Act diff --git a/src/NJsonSchema.CodeGeneration.CSharp.Tests/GeneralGeneratorTests.cs b/src/NJsonSchema.CodeGeneration.CSharp.Tests/GeneralGeneratorTests.cs index 3cb5537d4..8bac3428a 100644 --- a/src/NJsonSchema.CodeGeneration.CSharp.Tests/GeneralGeneratorTests.cs +++ b/src/NJsonSchema.CodeGeneration.CSharp.Tests/GeneralGeneratorTests.cs @@ -2016,7 +2016,7 @@ public static Person FromJson(string data) var generator = await CreateGeneratorAsync(); generator.Settings.JsonLibrary = CSharpJsonLibrary.SystemTextJson; generator.Settings.GenerateJsonMethods = true; - generator.Settings.JsonConverters = new[] { "CustomConverter1", "CustomConverter2" }; + generator.Settings.JsonConverters = ["CustomConverter1", "CustomConverter2"]; //// Act var output = generator.GenerateFile("MyClass"); @@ -2093,7 +2093,7 @@ public static Person FromJson(string data) var generator = await CreateGeneratorAsync(); generator.Settings.JsonLibrary = CSharpJsonLibrary.NewtonsoftJson; generator.Settings.GenerateJsonMethods = true; - generator.Settings.JsonConverters = new[] { "CustomConverter1", "CustomConverter2" }; + generator.Settings.JsonConverters = ["CustomConverter1", "CustomConverter2"]; //// Act var output = generator.GenerateFile("MyClass"); diff --git a/src/NJsonSchema.CodeGeneration.CSharp/CSharpGeneratorSettings.cs b/src/NJsonSchema.CodeGeneration.CSharp/CSharpGeneratorSettings.cs index 3f8e30e6d..67c265f3c 100644 --- a/src/NJsonSchema.CodeGeneration.CSharp/CSharpGeneratorSettings.cs +++ b/src/NJsonSchema.CodeGeneration.CSharp/CSharpGeneratorSettings.cs @@ -50,10 +50,9 @@ public CSharpGeneratorSettings() ValueGenerator = new CSharpValueGenerator(this); PropertyNameGenerator = new CSharpPropertyNameGenerator(); - TemplateFactory = new DefaultTemplateFactory(this, new Assembly[] - { + TemplateFactory = new DefaultTemplateFactory(this, [ typeof(CSharpGeneratorSettings).GetTypeInfo().Assembly - }); + ]); InlineNamedArrays = false; InlineNamedDictionaries = false; diff --git a/src/NJsonSchema.CodeGeneration.CSharp/CSharpJsonSerializerGenerator.cs b/src/NJsonSchema.CodeGeneration.CSharp/CSharpJsonSerializerGenerator.cs index 815d8dd68..a3c3baa6e 100644 --- a/src/NJsonSchema.CodeGeneration.CSharp/CSharpJsonSerializerGenerator.cs +++ b/src/NJsonSchema.CodeGeneration.CSharp/CSharpJsonSerializerGenerator.cs @@ -40,7 +40,7 @@ public static string GenerateJsonConvertersArrayCode(CSharpGeneratorSettings set private static List GetJsonConverters(CSharpGeneratorSettings settings, IEnumerable? additionalJsonConverters) { - return (settings.JsonConverters ?? Array.Empty()).Concat(additionalJsonConverters ?? Array.Empty()).ToList(); + return [.. settings.JsonConverters ?? [], .. additionalJsonConverters ?? []]; } private static string GenerateForJsonLibrary(CSharpGeneratorSettings settings, List jsonConverters, bool hasJsonConverters) diff --git a/src/NJsonSchema.CodeGeneration.CSharp/CSharpPropertyNameGenerator.cs b/src/NJsonSchema.CodeGeneration.CSharp/CSharpPropertyNameGenerator.cs index 2a42c6df8..0496cfed9 100644 --- a/src/NJsonSchema.CodeGeneration.CSharp/CSharpPropertyNameGenerator.cs +++ b/src/NJsonSchema.CodeGeneration.CSharp/CSharpPropertyNameGenerator.cs @@ -11,8 +11,9 @@ namespace NJsonSchema.CodeGeneration.CSharp /// Generates the property name for a given CSharp . public sealed class CSharpPropertyNameGenerator : IPropertyNameGenerator { - private static readonly char[] _reservedFirstPassChars = { '"', '\'', '@', '?', '!', '$', '[', ']', '(', ')', '.', '=', '+', '|' }; - private static readonly char[] _reservedSecondPassChars = { '*', ':', '-', '#', '&' }; + private static readonly char[] _reservedFirstPassChars = ['"', '\'', '@', '?', '!', '$', '[', ']', '(', ')', '.', '=', '+', '|' + ]; + private static readonly char[] _reservedSecondPassChars = ['*', ':', '-', '#', '&']; /// Generates the property name. /// The property. diff --git a/src/NJsonSchema.CodeGeneration.CSharp/CSharpValueGenerator.cs b/src/NJsonSchema.CodeGeneration.CSharp/CSharpValueGenerator.cs index 07356edf9..04fb5a1b2 100644 --- a/src/NJsonSchema.CodeGeneration.CSharp/CSharpValueGenerator.cs +++ b/src/NJsonSchema.CodeGeneration.CSharp/CSharpValueGenerator.cs @@ -17,11 +17,11 @@ namespace NJsonSchema.CodeGeneration.CSharp public class CSharpValueGenerator : ValueGeneratorBase { private readonly CSharpGeneratorSettings _settings; - private readonly List _typesWithStringConstructor = new List() - { + private readonly List _typesWithStringConstructor = + [ "System.Guid", "System.Uri" - }; + ]; /// Initializes a new instance of the class. /// The settings. diff --git a/src/NJsonSchema.CodeGeneration.Tests/EnumGenerationTests.cs b/src/NJsonSchema.CodeGeneration.Tests/EnumGenerationTests.cs index fafb47efa..4a219de1e 100644 --- a/src/NJsonSchema.CodeGeneration.Tests/EnumGenerationTests.cs +++ b/src/NJsonSchema.CodeGeneration.Tests/EnumGenerationTests.cs @@ -44,7 +44,7 @@ public async Task When_string_and_integer_enum_used_then_two_enums_are_generated var code = generator.GenerateFile("MyClass"); //// Assert - Assert.Equal(3, code.Split(new[] { "export enum " }, StringSplitOptions.None).Count()); // two found + Assert.Equal(3, code.Split(["export enum "], StringSplitOptions.None).Count()); // two found } [Fact] @@ -104,8 +104,9 @@ public async Task When_string_and_integer_enum_used_then_one_enum_is_generated_i Assert.Contains("public enum Bar2\n", code); Assert.Contains(" B = 5,", code); // B must be 5 even if B = 1 is first defined - Assert.Equal(3, code.Split(new[] { "public enum " }, StringSplitOptions.None).Count()); // two found (one string and one integer based enum) - Assert.Equal(3, code.Split(new[] { "[Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.StringEnumConverter))]" }, StringSplitOptions.None).Count()); // two found + Assert.Equal(3, code.Split(["public enum "], StringSplitOptions.None).Count()); // two found (one string and one integer based enum) + Assert.Equal(3, code.Split( + ["[Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.StringEnumConverter))]"], StringSplitOptions.None).Count()); // two found } [Fact] diff --git a/src/NJsonSchema.CodeGeneration.Tests/InheritanceSerializationTests.cs b/src/NJsonSchema.CodeGeneration.Tests/InheritanceSerializationTests.cs index 0529aff25..56c0f6a31 100644 --- a/src/NJsonSchema.CodeGeneration.Tests/InheritanceSerializationTests.cs +++ b/src/NJsonSchema.CodeGeneration.Tests/InheritanceSerializationTests.cs @@ -55,7 +55,7 @@ public class SubClass2 : SubClass public static Type[] GetTypes() { - return new Type[] { typeof(SubClass3) }; + return [typeof(SubClass3)]; } } @@ -88,11 +88,11 @@ public async Task When_JsonInheritanceConverter_is_used_then_inheritance_is_corr { Foo = "foo", Bar = "bar", - SubElements = new List - { + SubElements = + [ new SubClass1 { Prop1 = "x" }, - new SubClass3 { Prop2 = "x", Prop3 = "y"} - } + new SubClass3 { Prop2 = "x", Prop3 = "y" } + ] } }; @@ -120,11 +120,11 @@ public async Task When_serializer_setting_is_changed_then_converter_uses_correct { Foo = "foo", Bar = "bar", - SubElements = new List - { + SubElements = + [ new SubClass1 { Prop1 = "x" }, - new SubClass3 { Prop2 = "x", Prop3 = "y"} - } + new SubClass3 { Prop2 = "x", Prop3 = "y" } + ] } }; @@ -193,7 +193,7 @@ public async Task JsonInheritanceConverter_is_thread_safe() } //// Act - await Task.WhenAll(tasks.ToArray()); + await Task.WhenAll([.. tasks]); //// Assert // No exceptions diff --git a/src/NJsonSchema.CodeGeneration.Tests/LiquidTests.cs b/src/NJsonSchema.CodeGeneration.Tests/LiquidTests.cs index 9f081cc74..d341ef0e2 100644 --- a/src/NJsonSchema.CodeGeneration.Tests/LiquidTests.cs +++ b/src/NJsonSchema.CodeGeneration.Tests/LiquidTests.cs @@ -75,7 +75,7 @@ public void CanGetFriendlyErrorSuggestingUsingElsif() { TemplateDirectory = "Templates" }; - var templateFactory = new DefaultTemplateFactory(settings, Array.Empty()); + var templateFactory = new DefaultTemplateFactory(settings, []); var template1 = templateFactory.CreateTemplate("csharp", "elseif", new object()); // Act diff --git a/src/NJsonSchema.CodeGeneration.TypeScript.Tests/ExtensionCodeTests.cs b/src/NJsonSchema.CodeGeneration.TypeScript.Tests/ExtensionCodeTests.cs index 31c7da35b..3543fa461 100644 --- a/src/NJsonSchema.CodeGeneration.TypeScript.Tests/ExtensionCodeTests.cs +++ b/src/NJsonSchema.CodeGeneration.TypeScript.Tests/ExtensionCodeTests.cs @@ -57,7 +57,7 @@ public void When_extension_code_is_processed_then_code_and_classes_are_correctly var code = Code; //// Act - var extensionCode = new TypeScriptExtensionCode(code, new[] { "Foo", "Bar" }, new [] { "BaseClass" }); + var extensionCode = new TypeScriptExtensionCode(code, ["Foo", "Bar"], ["BaseClass"]); //// Assert Assert.True(extensionCode.ExtensionClasses.ContainsKey("Foo")); @@ -103,7 +103,7 @@ public async Task When_classes_have_extension_code_then_class_body_is_copied() //// Act var generator = new TypeScriptGenerator(schema, new TypeScriptGeneratorSettings { - ExtendedClasses = new[] { "Foo", "Bar" }, + ExtendedClasses = ["Foo", "Bar"], ExtensionCode = Code }); var code = generator.GenerateFile(); @@ -131,7 +131,7 @@ protected transformOptions(options: RequestInit): Promise { }"; //// Act - var extensionCode = new TypeScriptExtensionCode(code, Array.Empty(), new[] { "UseHttpCookiesForApi" }); + var extensionCode = new TypeScriptExtensionCode(code, [], ["UseHttpCookiesForApi"]); //// Assert Assert.Empty(extensionCode.ExtensionClasses); diff --git a/src/NJsonSchema.CodeGeneration.TypeScript.Tests/InheritanceTests.cs b/src/NJsonSchema.CodeGeneration.TypeScript.Tests/InheritanceTests.cs index 7ca7f63bd..715a5557a 100644 --- a/src/NJsonSchema.CodeGeneration.TypeScript.Tests/InheritanceTests.cs +++ b/src/NJsonSchema.CodeGeneration.TypeScript.Tests/InheritanceTests.cs @@ -360,7 +360,7 @@ export class ExceptionBase extends generated.ExceptionBase { var generator = new TypeScriptGenerator(schema, new TypeScriptGeneratorSettings { ExtensionCode = extensionCode, - ExtendedClasses = new[] { "ExceptionBase" }, + ExtendedClasses = ["ExceptionBase"], }); //// Act diff --git a/src/NJsonSchema.CodeGeneration.TypeScript/TypeScriptGeneratorSettings.cs b/src/NJsonSchema.CodeGeneration.TypeScript/TypeScriptGeneratorSettings.cs index c627f1788..753832235 100644 --- a/src/NJsonSchema.CodeGeneration.TypeScript/TypeScriptGeneratorSettings.cs +++ b/src/NJsonSchema.CodeGeneration.TypeScript/TypeScriptGeneratorSettings.cs @@ -34,13 +34,12 @@ public TypeScriptGeneratorSettings() ValueGenerator = new TypeScriptValueGenerator(this); PropertyNameGenerator = new TypeScriptPropertyNameGenerator(); - TemplateFactory = new DefaultTemplateFactory(this, new Assembly[] - { + TemplateFactory = new DefaultTemplateFactory(this, [ typeof(TypeScriptGeneratorSettings).GetTypeInfo().Assembly - }); + ]); - ClassTypes = Array.Empty(); - ExtendedClasses = Array.Empty(); + ClassTypes = []; + ExtendedClasses = []; InlineNamedDictionaries = false; GenerateTypeCheckFunctions = false; diff --git a/src/NJsonSchema.CodeGeneration.TypeScript/TypeScriptPropertyNameGenerator.cs b/src/NJsonSchema.CodeGeneration.TypeScript/TypeScriptPropertyNameGenerator.cs index 6f92c8e84..3ae5ff610 100644 --- a/src/NJsonSchema.CodeGeneration.TypeScript/TypeScriptPropertyNameGenerator.cs +++ b/src/NJsonSchema.CodeGeneration.TypeScript/TypeScriptPropertyNameGenerator.cs @@ -14,8 +14,8 @@ namespace NJsonSchema.CodeGeneration.TypeScript /// Generates the property name for a given TypeScript . public sealed class TypeScriptPropertyNameGenerator : IPropertyNameGenerator { - private static readonly char[] _reservedFirstPassChars = { '"', '@', '?', '.', '=', '+' }; - private static readonly char[] _reservedSecondPassChars = { '*', ':', '-' }; + private static readonly char[] _reservedFirstPassChars = ['"', '@', '?', '.', '=', '+']; + private static readonly char[] _reservedSecondPassChars = ['*', ':', '-']; /// Gets or sets the reserved names. public HashSet ReservedPropertyNames { get; set; } = new(StringComparer.Ordinal) { "constructor", "init", "fromJS", "toJSON" }; diff --git a/src/NJsonSchema.CodeGeneration.TypeScript/TypeScriptTypeResolver.cs b/src/NJsonSchema.CodeGeneration.TypeScript/TypeScriptTypeResolver.cs index b61f02fd2..d400ae8db 100644 --- a/src/NJsonSchema.CodeGeneration.TypeScript/TypeScriptTypeResolver.cs +++ b/src/NJsonSchema.CodeGeneration.TypeScript/TypeScriptTypeResolver.cs @@ -310,7 +310,7 @@ private string ResolveArrayOrTuple(JsonSchema schema, string? typeNameHint, bool if (Settings.UseLeafType) { var itemTypes = Resolve(schema.Item, true, typeNameHint) // TODO: Make typeNameHint singular if possible - .Split(new[] { UnionPipe }, StringSplitOptions.RemoveEmptyEntries) + .Split([UnionPipe], StringSplitOptions.RemoveEmptyEntries) .Select(x => GetNullableItemType(schema, prefix + x)) .ToList(); diff --git a/src/NJsonSchema.CodeGeneration/CodeArtifactExtensions.cs b/src/NJsonSchema.CodeGeneration/CodeArtifactExtensions.cs index e53f6f4e3..56519326c 100644 --- a/src/NJsonSchema.CodeGeneration/CodeArtifactExtensions.cs +++ b/src/NJsonSchema.CodeGeneration/CodeArtifactExtensions.cs @@ -31,7 +31,7 @@ public static IEnumerable OrderByBaseDependency(this IEnumerable(results); // we need new list to iterate as we modify the original - var resultIterator = results as List ?? newResults.ToList(); + var resultIterator = results as List ?? [.. newResults]; foreach (var result in resultIterator) { if (!string.IsNullOrEmpty(GetActualBaseName(result.BaseTypeName))) diff --git a/src/NJsonSchema.CodeGeneration/CodeGeneratorSettingsBase.cs b/src/NJsonSchema.CodeGeneration/CodeGeneratorSettingsBase.cs index 1b08ecc9b..c89009fba 100644 --- a/src/NJsonSchema.CodeGeneration/CodeGeneratorSettingsBase.cs +++ b/src/NJsonSchema.CodeGeneration/CodeGeneratorSettingsBase.cs @@ -20,7 +20,7 @@ public CodeGeneratorSettingsBase() #pragma warning restore CS8618 { GenerateDefaultValues = true; - ExcludedTypeNames = Array.Empty(); + ExcludedTypeNames = []; } /// Gets or sets the schema type (default: JsonSchema). diff --git a/src/NJsonSchema.CodeGeneration/TypeResolverBase.cs b/src/NJsonSchema.CodeGeneration/TypeResolverBase.cs index c8d370aeb..a3048079b 100644 --- a/src/NJsonSchema.CodeGeneration/TypeResolverBase.cs +++ b/src/NJsonSchema.CodeGeneration/TypeResolverBase.cs @@ -16,7 +16,7 @@ public abstract class TypeResolverBase { private readonly CodeGeneratorSettingsBase _settings; internal readonly Dictionary _generatedTypeNames = new(); - private readonly HashSet _reservedTypeNames = new(); + private readonly HashSet _reservedTypeNames = []; /// Initializes a new instance of the class. /// The settings. diff --git a/src/NJsonSchema.Demo.Performance/Program.cs b/src/NJsonSchema.Demo.Performance/Program.cs index 1a83f85c8..65ccdf31a 100644 --- a/src/NJsonSchema.Demo.Performance/Program.cs +++ b/src/NJsonSchema.Demo.Performance/Program.cs @@ -62,7 +62,7 @@ public class WritingInstrument { public static Type[] GetKnownTypes() { - return new[] { typeof(Pen), typeof(Pencil) }; + return [typeof(Pen), typeof(Pencil)]; } public string Baz { get; set; } diff --git a/src/NJsonSchema.NewtonsoftJson/Converters/JsonExceptionConverter.cs b/src/NJsonSchema.NewtonsoftJson/Converters/JsonExceptionConverter.cs index 5d12ae739..edc0e6bc9 100644 --- a/src/NJsonSchema.NewtonsoftJson/Converters/JsonExceptionConverter.cs +++ b/src/NJsonSchema.NewtonsoftJson/Converters/JsonExceptionConverter.cs @@ -200,10 +200,8 @@ public override bool CanConvert(Type objectType) } - private static readonly HashSet ignoredExceptionProperties = new() - { - "Message", "StackTrace", "Source", "InnerException", "Data", "TargetSite", "HelpLink", "HResult" - }; + private static readonly HashSet ignoredExceptionProperties = + ["Message", "StackTrace", "Source", "InnerException", "Data", "TargetSite", "HelpLink", "HResult"]; private static Dictionary GetExceptionProperties(Type exceptionType) { diff --git a/src/NJsonSchema.NewtonsoftJson/Converters/JsonInheritanceConverter.cs b/src/NJsonSchema.NewtonsoftJson/Converters/JsonInheritanceConverter.cs index aff50579c..dd9bbe644 100644 --- a/src/NJsonSchema.NewtonsoftJson/Converters/JsonInheritanceConverter.cs +++ b/src/NJsonSchema.NewtonsoftJson/Converters/JsonInheritanceConverter.cs @@ -268,7 +268,7 @@ protected virtual Type GetDiscriminatorType(JObject jObject, Type objectType, st var method = type.GetRuntimeMethod((string)attribute.MethodName, Type.EmptyTypes); if (method != null) { - var types = (System.Collections.Generic.IEnumerable)method.Invoke(null, Array.Empty()); + var types = (System.Collections.Generic.IEnumerable)method.Invoke(null, []); foreach (var knownType in types) { if (knownType.Name == discriminator) diff --git a/src/NJsonSchema.NewtonsoftJson/Generation/NewtonsoftJsonReflectionService.cs b/src/NJsonSchema.NewtonsoftJson/Generation/NewtonsoftJsonReflectionService.cs index 56bb7d58c..c01f44218 100644 --- a/src/NJsonSchema.NewtonsoftJson/Generation/NewtonsoftJsonReflectionService.cs +++ b/src/NJsonSchema.NewtonsoftJson/Generation/NewtonsoftJsonReflectionService.cs @@ -65,7 +65,7 @@ public override bool IsStringEnum(ContextualType contextualType, NewtonsoftJsonS converters.Add(new StringEnumConverter()); } - return x => JsonConvert.DeserializeObject(JsonConvert.SerializeObject(x, Formatting.None, converters.ToArray())); + return x => JsonConvert.DeserializeObject(JsonConvert.SerializeObject(x, Formatting.None, [.. converters])); } /// diff --git a/src/NJsonSchema.Tests/Generation/AnnotationsGenerationTests.cs b/src/NJsonSchema.Tests/Generation/AnnotationsGenerationTests.cs index 33012ea4d..3f5a2b2fc 100644 --- a/src/NJsonSchema.Tests/Generation/AnnotationsGenerationTests.cs +++ b/src/NJsonSchema.Tests/Generation/AnnotationsGenerationTests.cs @@ -112,7 +112,7 @@ public SimpleClass(decimal number) public async Task When_multipleOf_is_fraction_then_it_is_validated_correctly() { //// Arrange - List testClasses = new List(); + List testClasses = []; for (int i = 0; i < 100; i++) { testClasses.Add(new SimpleClass((decimal)(0.1 * i))); diff --git a/src/NJsonSchema.Tests/Generation/ArrayGenerationTests.cs b/src/NJsonSchema.Tests/Generation/ArrayGenerationTests.cs index 5faa0f813..0b4755ee7 100644 --- a/src/NJsonSchema.Tests/Generation/ArrayGenerationTests.cs +++ b/src/NJsonSchema.Tests/Generation/ArrayGenerationTests.cs @@ -32,9 +32,9 @@ public async Task When_property_is_JArray_then_schema_with_any_array_is_generate #nullable enable public class ClassWithArrayOfNullable { - public string?[] Array { get; set; } = new string?[0]; + public string?[] Array { get; set; } = []; - public List List { get; set; } = new List(); + public List List { get; set; } = []; } #nullable restore diff --git a/src/NJsonSchema.Tests/Generation/ContractResolverTests.cs b/src/NJsonSchema.Tests/Generation/ContractResolverTests.cs index 602f2d127..c1bc79318 100644 --- a/src/NJsonSchema.Tests/Generation/ContractResolverTests.cs +++ b/src/NJsonSchema.Tests/Generation/ContractResolverTests.cs @@ -68,10 +68,15 @@ protected override JsonContract CreateContract(Type objectType) return contract; } - static HashSet _systemConverters = new HashSet(new[] { - "System.ComponentModel.ComponentConverter", - "System.ComponentModel.ReferenceConverter", - "System.ComponentModel.CollectionConverter" }); + static HashSet _systemConverters = + [ + ..new[] + { + "System.ComponentModel.ComponentConverter", + "System.ComponentModel.ReferenceConverter", + "System.ComponentModel.CollectionConverter" + } + ]; public static bool CanNonSystemTypeDescriptorConvertString(Type type) { diff --git a/src/NJsonSchema.Tests/Generation/EnumTests.cs b/src/NJsonSchema.Tests/Generation/EnumTests.cs index 12682fcdb..f6816a336 100644 --- a/src/NJsonSchema.Tests/Generation/EnumTests.cs +++ b/src/NJsonSchema.Tests/Generation/EnumTests.cs @@ -46,8 +46,8 @@ public async Task When_enum_is_used_multiple_times_in_array_then_it_is_always_re var json = schema.ToJson(); // Assert - Assert.True(json.Split(new[] { "x-enumNames" }, StringSplitOptions.None).Length == 2); // enum is defined only once - Assert.True(json.Split(new[] { "\"$ref\": \"#/definitions/MetadataSchemaType\"" }, StringSplitOptions.None).Length == 3); // both classes reference the enum + Assert.True(json.Split(["x-enumNames"], StringSplitOptions.None).Length == 2); // enum is defined only once + Assert.True(json.Split(["\"$ref\": \"#/definitions/MetadataSchemaType\""], StringSplitOptions.None).Length == 3); // both classes reference the enum } public class ContainerWithEnumDictionary diff --git a/src/NJsonSchema.Tests/Generation/InheritanceTests.cs b/src/NJsonSchema.Tests/Generation/InheritanceTests.cs index 144bca65d..3f7ace08f 100644 --- a/src/NJsonSchema.Tests/Generation/InheritanceTests.cs +++ b/src/NJsonSchema.Tests/Generation/InheritanceTests.cs @@ -277,10 +277,10 @@ public async Task When_deserializing_object_with_inheritance_then_correct_type_i /// Act var vm = JsonConvert.DeserializeObject(json, new JsonSerializerSettings { - Converters = new[] - { + Converters = + [ new JsonInheritanceConverter(typeof(CommonThingBase), "discriminator") - } + ] }); /// Assert diff --git a/src/NJsonSchema.Tests/Generation/KnownTypeGenerationTests.cs b/src/NJsonSchema.Tests/Generation/KnownTypeGenerationTests.cs index 187af502d..7cd0fe6bf 100644 --- a/src/NJsonSchema.Tests/Generation/KnownTypeGenerationTests.cs +++ b/src/NJsonSchema.Tests/Generation/KnownTypeGenerationTests.cs @@ -40,7 +40,7 @@ public class WritingInstrument { public static Type[] GetKnownTypes() { - return new[] { typeof(Pen), typeof(Pencil) }; + return [typeof(Pen), typeof(Pencil)]; } public string Baz { get; set; } diff --git a/src/NJsonSchema.Tests/Generation/XmlObjectTests.cs b/src/NJsonSchema.Tests/Generation/XmlObjectTests.cs index 08419926f..873ce0e93 100644 --- a/src/NJsonSchema.Tests/Generation/XmlObjectTests.cs +++ b/src/NJsonSchema.Tests/Generation/XmlObjectTests.cs @@ -42,11 +42,11 @@ public class WithXmlAttribute private static WithoutXmlAttributesDefined Data => new WithoutXmlAttributesDefined() { Foo = "stringvalue", - StringArray = new[] { "S1" }, - IntArray = new[] { 1 }, - DoubleArray = new double[] { 1 }, - DecimalArray = new decimal[] { 1 }, - InternalItem = new[] { new WithoutXmlAttributeItem() { Name = "Test" } }, + StringArray = ["S1"], + IntArray = [1], + DoubleArray = [1], + DecimalArray = [1], + InternalItem = [new WithoutXmlAttributeItem() { Name = "Test" }], ShouldBeThisPropertyName = new WithXmlAttribute() { Name = "Test2" } }; @@ -273,11 +273,11 @@ public class WithXmlAttributeProperty { Foo = "stringvalue", MightBeAAttribute = "stringvalue", - StringArray = new[] { "S1" }, - TheInts = new[] { 1 }, - InternalItems = new[] { new WithXmlAttributeItem() { Name = "Test" } }, + StringArray = ["S1"], + TheInts = [1], + InternalItems = [new WithXmlAttributeItem() { Name = "Test" }], ReferenceProperty = new WithXmlAttributeProperty() { Name = "Test" }, - ExternalItems2 = new[] { new WithXmlAttributeItem2() { Name = "Test" } }, + ExternalItems2 = [new WithXmlAttributeItem2() { Name = "Test" }], }; public static string CreateTestXml() diff --git a/src/NJsonSchema.Tests/Validation/CustomValidationTests.cs b/src/NJsonSchema.Tests/Validation/CustomValidationTests.cs index 495375434..bb62721c0 100644 --- a/src/NJsonSchema.Tests/Validation/CustomValidationTests.cs +++ b/src/NJsonSchema.Tests/Validation/CustomValidationTests.cs @@ -33,9 +33,10 @@ public void When_format_date_time_correct_with_custom_validator_passed_then_no_e private class CustomDateTimeFormatValidator : IFormatValidator { - private readonly string[] _acceptableFormats = { + private readonly string[] _acceptableFormats = + [ "yyyy'-'MM'-'dd HH':'mm':'ss':'ff" - }; + ]; /// /// Gets the format attributes value. diff --git a/src/NJsonSchema.Tests/Validation/FormatBase64Tests.cs b/src/NJsonSchema.Tests/Validation/FormatBase64Tests.cs index 78976a636..e085280ae 100644 --- a/src/NJsonSchema.Tests/Validation/FormatBase64Tests.cs +++ b/src/NJsonSchema.Tests/Validation/FormatBase64Tests.cs @@ -58,7 +58,7 @@ public void Validation_should_succeed_if_string_is_base64_formatted_with_trailin Format = "base64" }; - var value = Convert.ToBase64String(new byte[] { 101, 22, 87, 25 }); + var value = Convert.ToBase64String([101, 22, 87, 25]); var token = new JValue(value); //// Act @@ -78,7 +78,7 @@ public void Validation_should_succeed_if_string_is_byte_formatted_with_trailing_ Format = JsonFormatStrings.Byte }; - var value = Convert.ToBase64String(new byte[] { 101, 22, 87, 25 }); + var value = Convert.ToBase64String([101, 22, 87, 25]); var token = new JValue(value); //// Act @@ -98,7 +98,7 @@ public void Validation_should_succeed_if_string_is_base64_formatted_without_trai Format = "base64" }; - var value = Convert.ToBase64String(new byte[] { 1, 2, 3 }); + var value = Convert.ToBase64String([1, 2, 3]); var token = new JValue(value); //// Act @@ -118,7 +118,7 @@ public void Validation_should_succeed_if_string_is_byte_formatted_without_traili Format = JsonFormatStrings.Byte }; - var value = Convert.ToBase64String(new byte[] { 1, 2, 3 }); + var value = Convert.ToBase64String([1, 2, 3]); var token = new JValue(value); //// Act diff --git a/src/NJsonSchema.Yaml.Tests/References/YamlReferencesTests.cs b/src/NJsonSchema.Yaml.Tests/References/YamlReferencesTests.cs index 610400d0f..11cc4e1ed 100644 --- a/src/NJsonSchema.Yaml.Tests/References/YamlReferencesTests.cs +++ b/src/NJsonSchema.Yaml.Tests/References/YamlReferencesTests.cs @@ -94,7 +94,7 @@ public async Task When_yaml_OpenAPI_spec_has_relative_external_schema_refs_in_su var schema = OK.Content["application/json"]; JsonSchemaProperty items = schema.Schema.ActualSchema.ActualProperties["items"]; var innerProperties = items.Item.ActualSchema.ActualProperties; - string[] expectedProperties = new string[] { "id", "systemName", "name", "smallImageID", "helpText" }; + string[] expectedProperties = ["id", "systemName", "name", "smallImageID", "helpText"]; foreach (string property in expectedProperties) { diff --git a/src/NJsonSchema/CompilerFeatures.cs b/src/NJsonSchema/CompilerFeatures.cs index d0b78f8b1..581104987 100644 --- a/src/NJsonSchema/CompilerFeatures.cs +++ b/src/NJsonSchema/CompilerFeatures.cs @@ -205,7 +205,7 @@ sealed class MemberNotNullAttribute : Attribute /// /// The field or property member that is promised to be not-null. /// - public MemberNotNullAttribute(string member) => Members = new[] { member }; + public MemberNotNullAttribute(string member) => Members = [member]; /// Initializes the attribute with the list of field and property members. /// @@ -236,7 +236,7 @@ sealed class MemberNotNullWhenAttribute : Attribute public MemberNotNullWhenAttribute(bool returnValue, string member) { ReturnValue = returnValue; - Members = new[] { member }; + Members = [member]; } /// Initializes the attribute with the specified return value condition and list of field and property members. diff --git a/src/NJsonSchema/ConversionUtilities.cs b/src/NJsonSchema/ConversionUtilities.cs index ec61f5474..35ab5fa97 100644 --- a/src/NJsonSchema/ConversionUtilities.cs +++ b/src/NJsonSchema/ConversionUtilities.cs @@ -162,7 +162,7 @@ public static string ConvertToCamelCase(string input) } - private static readonly char[] _whiteSpaceChars = { '\n', '\r', '\t', ' ' }; + private static readonly char[] _whiteSpaceChars = ['\n', '\r', '\t', ' ']; /// Trims white spaces from the text. /// The text. @@ -172,7 +172,7 @@ public static string TrimWhiteSpaces(string? text) return text?.Trim(_whiteSpaceChars) ?? string.Empty; } - private static readonly char[] _lineBreakTrimChars = { '\n', '\t', ' ' }; + private static readonly char[] _lineBreakTrimChars = ['\n', '\t', ' ']; /// Removes the line breaks from the text. /// The text. diff --git a/src/NJsonSchema/Converters/JsonInheritanceConverter.cs b/src/NJsonSchema/Converters/JsonInheritanceConverter.cs index bd356b81e..8951b303d 100644 --- a/src/NJsonSchema/Converters/JsonInheritanceConverter.cs +++ b/src/NJsonSchema/Converters/JsonInheritanceConverter.cs @@ -188,7 +188,7 @@ protected virtual Type GetDiscriminatorType(JsonElement jObject, Type objectType var method = type.GetRuntimeMethod((string)attribute.MethodName, Type.EmptyTypes); if (method != null) { - if (method.Invoke(null, Array.Empty()) is IEnumerable types) + if (method.Invoke(null, []) is IEnumerable types) { foreach (var knownType in types) { diff --git a/src/NJsonSchema/DefaultTypeNameGenerator.cs b/src/NJsonSchema/DefaultTypeNameGenerator.cs index cd29eae0a..33049d39d 100644 --- a/src/NJsonSchema/DefaultTypeNameGenerator.cs +++ b/src/NJsonSchema/DefaultTypeNameGenerator.cs @@ -17,10 +17,10 @@ namespace NJsonSchema /// Converts the last part of the full type name to upper case. public class DefaultTypeNameGenerator : ITypeNameGenerator { - private static readonly char[] TypeNameHintCleanupChars = { '[', ']', '<', '>', ',', ' ' }; + private static readonly char[] TypeNameHintCleanupChars = ['[', ']', '<', '>', ',', ' ']; private readonly Dictionary _typeNameMappings = new(); - private string[] _reservedTypeNames = { "object" }; + private string[] _reservedTypeNames = ["object"]; // TODO: Expose as options to UI and cmd line? diff --git a/src/NJsonSchema/Generation/JsonSchemaGenerator.cs b/src/NJsonSchema/Generation/JsonSchemaGenerator.cs index f20b8ede3..44a43742b 100644 --- a/src/NJsonSchema/Generation/JsonSchemaGenerator.cs +++ b/src/NJsonSchema/Generation/JsonSchemaGenerator.cs @@ -577,7 +577,7 @@ protected virtual void GenerateObject(JsonSchema schema, JsonTypeDescription typ { if (type == typeof(Exception)) { - return new[] { "InnerException", "Message", "Source", "StackTrace" }; + return ["InnerException", "Message", "Source", "StackTrace"]; } return null; diff --git a/src/NJsonSchema/Generation/JsonSchemaGeneratorSettings.cs b/src/NJsonSchema/Generation/JsonSchemaGeneratorSettings.cs index 63519b068..4b50cb3c3 100644 --- a/src/NJsonSchema/Generation/JsonSchemaGeneratorSettings.cs +++ b/src/NJsonSchema/Generation/JsonSchemaGeneratorSettings.cs @@ -36,7 +36,7 @@ public JsonSchemaGeneratorSettings(IReflectionService reflectionService) TypeNameGenerator = new DefaultTypeNameGenerator(); SchemaNameGenerator = new DefaultSchemaNameGenerator(); - ExcludedTypeNames = Array.Empty(); + ExcludedTypeNames = []; UseXmlDocumentation = true; ResolveExternalXmlDocumentation = true; diff --git a/src/NJsonSchema/Infrastructure/DynamicApis.cs b/src/NJsonSchema/Infrastructure/DynamicApis.cs index e1a77e390..85c84c9b4 100644 --- a/src/NJsonSchema/Infrastructure/DynamicApis.cs +++ b/src/NJsonSchema/Infrastructure/DynamicApis.cs @@ -52,7 +52,7 @@ public static async Task HttpGetAsync(string url, CancellationToken canc } using dynamic handler = (IDisposable)Activator.CreateInstance(HttpClientHandlerType!)!; - using dynamic client = (IDisposable)Activator.CreateInstance(HttpClientType!, new[] { handler })!; + using dynamic client = (IDisposable)Activator.CreateInstance(HttpClientType!, [handler])!; handler.UseDefaultCredentials = true; // enable all decompression methods diff --git a/src/NJsonSchema/Infrastructure/PropertyRenameAndIgnoreSerializerContractResolver.cs b/src/NJsonSchema/Infrastructure/PropertyRenameAndIgnoreSerializerContractResolver.cs index 405f630a7..d7a5919e8 100644 --- a/src/NJsonSchema/Infrastructure/PropertyRenameAndIgnoreSerializerContractResolver.cs +++ b/src/NJsonSchema/Infrastructure/PropertyRenameAndIgnoreSerializerContractResolver.cs @@ -34,7 +34,7 @@ public void IgnoreProperty(Type type, params string[] jsonPropertyNames) { if (!_ignores.TryGetValue(type.FullName!, out HashSet? value)) { - value = new HashSet(); + value = []; _ignores[type.FullName!] = value; } diff --git a/src/NJsonSchema/JsonPathUtilities.cs b/src/NJsonSchema/JsonPathUtilities.cs index e83462399..b027dc922 100644 --- a/src/NJsonSchema/JsonPathUtilities.cs +++ b/src/NJsonSchema/JsonPathUtilities.cs @@ -59,7 +59,7 @@ public static class JsonPathUtilities } var mappings = searchedObjects.ToDictionary(o => o, o => (string?)null); - FindJsonPaths(rootObject, mappings, "#", new HashSet(), contractResolver); + FindJsonPaths(rootObject, mappings, "#", [], contractResolver); if (mappings.Any(p => p.Value == null)) { diff --git a/src/NJsonSchema/JsonReferenceResolver.cs b/src/NJsonSchema/JsonReferenceResolver.cs index c91e9f0db..3f783cb53 100644 --- a/src/NJsonSchema/JsonReferenceResolver.cs +++ b/src/NJsonSchema/JsonReferenceResolver.cs @@ -106,7 +106,7 @@ public virtual IJsonReference ResolveDocumentReference(object rootObject, string allSegments[i] = UnescapeReferenceSegment(allSegments[i]); } - var schema = ResolveDocumentReference(rootObject, allSegments, targetType, contractResolver, new HashSet()) + var schema = ResolveDocumentReference(rootObject, allSegments, targetType, contractResolver, []) ?? throw new InvalidOperationException($"Could not resolve the path '{jsonPath}'."); return schema; diff --git a/src/NJsonSchema/JsonSchema.Reference.cs b/src/NJsonSchema/JsonSchema.Reference.cs index ee89538bd..7ebe8de7d 100644 --- a/src/NJsonSchema/JsonSchema.Reference.cs +++ b/src/NJsonSchema/JsonSchema.Reference.cs @@ -20,7 +20,7 @@ public partial class JsonSchema : JsonReferenceBase, IJsonReference /// Cyclic references detected. /// The schema reference path has not been resolved. [JsonIgnore] - public virtual JsonSchema ActualSchema => GetActualSchema(new List()); + public virtual JsonSchema ActualSchema => GetActualSchema([]); /// Gets the type actual schema (e.g. the shared schema of a property, parameter, etc.). /// Cyclic references detected. @@ -113,7 +113,7 @@ static void ThrowInvalidOperationException(string message) private JsonSchema? GetActualSchemaReferences(List checkedSchemas) { - checkedSchemas ??= new List(); + checkedSchemas ??= []; checkedSchemas.Add(this); if (HasAllOfSchemaReference) diff --git a/src/NJsonSchema/JsonSchema.cs b/src/NJsonSchema/JsonSchema.cs index 6a8b718eb..fd31ec1f8 100644 --- a/src/NJsonSchema/JsonSchema.cs +++ b/src/NJsonSchema/JsonSchema.cs @@ -30,7 +30,8 @@ namespace NJsonSchema /// A base class for describing a JSON schema. public partial class JsonSchema : IDocumentPathProvider { - internal static readonly HashSet JsonSchemaPropertiesCache = new HashSet(typeof(JsonSchema).GetContextualProperties().Select(p => p.Name).ToArray()); + internal static readonly HashSet JsonSchemaPropertiesCache = + [..typeof(JsonSchema).GetContextualProperties().Select(p => p.Name).ToArray()]; private const SchemaType SerializationSchemaType = SchemaType.JsonSchema; @@ -314,7 +315,7 @@ public IReadOnlyCollection AllInheritedSchemas new List { this.InheritedSchema } : new List(); - return inheritedSchema.Concat(inheritedSchema.SelectMany(s => s.AllInheritedSchemas)).ToList(); + return [.. inheritedSchema, .. inheritedSchema.SelectMany(s => s.AllInheritedSchemas)]; } } @@ -1075,7 +1076,7 @@ private void Initialize() if (EnumerationNames == null) { - EnumerationNames = new Collection(); + EnumerationNames = []; } } #pragma warning restore CS8774 diff --git a/src/NJsonSchema/OpenApiDiscriminator.cs b/src/NJsonSchema/OpenApiDiscriminator.cs index 40e782615..f57b44e54 100644 --- a/src/NJsonSchema/OpenApiDiscriminator.cs +++ b/src/NJsonSchema/OpenApiDiscriminator.cs @@ -37,11 +37,11 @@ public class OpenApiDiscriminator public void AddMapping(Type type, JsonSchema schema) { var getDiscriminatorValueMethod = JsonInheritanceConverter?.GetType() - .GetRuntimeMethod("GetDiscriminatorValue", new Type[] { typeof(Type) }); + .GetRuntimeMethod("GetDiscriminatorValue", [typeof(Type)]); if (getDiscriminatorValueMethod != null) { - var discriminatorValue = (string)getDiscriminatorValueMethod.Invoke(JsonInheritanceConverter, new[] { type } )!; + var discriminatorValue = (string)getDiscriminatorValueMethod.Invoke(JsonInheritanceConverter, [type])!; Mapping[discriminatorValue] = new JsonSchema { Reference = schema.ActualSchema }; } else diff --git a/src/NJsonSchema/Validation/FormatValidators/DateTimeFormatValidator.cs b/src/NJsonSchema/Validation/FormatValidators/DateTimeFormatValidator.cs index 22f4add90..b544c9150 100644 --- a/src/NJsonSchema/Validation/FormatValidators/DateTimeFormatValidator.cs +++ b/src/NJsonSchema/Validation/FormatValidators/DateTimeFormatValidator.cs @@ -15,7 +15,8 @@ namespace NJsonSchema.Validation.FormatValidators /// Validator for DateTime format. public class DateTimeFormatValidator : IFormatValidator { - private readonly string[] _acceptableFormats = new [] { + private readonly string[] _acceptableFormats = + [ "yyyy-MM-dd'T'HH:mm:ss.FFFFFFFK", "yyyy-MM-dd' 'HH:mm:ss.FFFFFFFK", "yyyy-MM-dd'T'HH:mm:ssK", @@ -31,7 +32,7 @@ public class DateTimeFormatValidator : IFormatValidator "yyyyMMdd", "yyyy-MM", "yyyy" - }; + ]; /// Gets the format attribute's value. public string Format { get; } = JsonFormatStrings.DateTime; diff --git a/src/NJsonSchema/Validation/JsonSchemaValidatorOptions.cs b/src/NJsonSchema/Validation/JsonSchemaValidatorOptions.cs index 361e91a1e..9ff4c5c9c 100644 --- a/src/NJsonSchema/Validation/JsonSchemaValidatorOptions.cs +++ b/src/NJsonSchema/Validation/JsonSchemaValidatorOptions.cs @@ -12,8 +12,8 @@ public class JsonSchemaValidatorSettings public StringComparer PropertyStringComparer { get; set; } = StringComparer.Ordinal; /// Gets or sets the format validators. - public IEnumerable FormatValidators { get; set; } = new IFormatValidator[] - { + public IEnumerable FormatValidators { get; set; } = + [ new DateTimeFormatValidator(), new DateFormatValidator(), new EmailFormatValidator(), @@ -27,7 +27,7 @@ public class JsonSchemaValidatorSettings new ByteFormatValidator(), new Base64FormatValidator(), new UuidFormatValidator() - }; + ]; /// /// Adds a custom format validator to the array. @@ -37,7 +37,7 @@ public void AddCustomFormatValidator(IFormatValidator formatValidator) { FormatValidators = this .FormatValidators - .Union(new[] { formatValidator }) + .Union([formatValidator]) .ToArray(); } }