| File: Model\SourceGenerationOptionsSpec.cs | Web Access |
| Project: src\runtime\src\libraries\System.Text.Json\gen\System.Text.Json.SourceGeneration.Roslyn4.4.csproj (System.Text.Json.SourceGeneration) |
// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. using System.Text.Json.Serialization; using SourceGenerators; namespace System.Text.Json.SourceGeneration { /// <summary> /// Models compile-time configuration of <see cref="JsonSourceGenerationOptionsAttribute"/>. /// Properties are made nullable to model the presence or absence of a given configuration. /// </summary> public sealed record SourceGenerationOptionsSpec { public required JsonSourceGenerationMode? GenerationMode { get; init; } public required JsonSerializerDefaults? Defaults { get; init; } public required bool? AllowOutOfOrderMetadataProperties { get; init; } public required bool? AllowTrailingCommas { get; init; } public required ImmutableEquatableArray<TypeRef>? Converters { get; init; } public required ImmutableEquatableArray<TypeRef>? TypeClassifiers { get; init; } /// <summary> /// The <c>[Experimental]</c> diagnostic IDs referenced by the options-level converters and type /// classifiers above. These are suppressed in the aggregate source files that emit the options setup. /// </summary> public required ImmutableEquatableArray<string> ExperimentalDiagnosticIds { get; init; } public required int? DefaultBufferSize { get; init; } public required JsonIgnoreCondition? DefaultIgnoreCondition { get; init; } public required JsonKnownNamingPolicy? DictionaryKeyPolicy { get; init; } public required bool? RespectNullableAnnotations { get; init; } public required bool? RespectRequiredConstructorParameters { get; init; } public required bool? IgnoreReadOnlyFields { get; init; } public required bool? IgnoreReadOnlyProperties { get; init; } public required bool? IncludeFields { get; init; } public required int? MaxDepth { get; init; } public required string? NewLine { get; init; } public required JsonNumberHandling? NumberHandling { get; init; } public required JsonObjectCreationHandling? PreferredObjectCreationHandling { get; init; } public required bool? PropertyNameCaseInsensitive { get; init; } public required JsonKnownNamingPolicy? PropertyNamingPolicy { get; init; } public required JsonCommentHandling? ReadCommentHandling { get; init; } public required JsonKnownReferenceHandler? ReferenceHandler { get; init; } public required JsonUnknownTypeHandling? UnknownTypeHandling { get; init; } public required JsonUnmappedMemberHandling? UnmappedMemberHandling { get; init; } public required bool? UseStringEnumConverter { get; init; } public required bool? WriteIndented { get; init; } public required char? IndentCharacter { get; init; } public required int? IndentSize { get; init; } public required bool? AllowDuplicateProperties { get; init; } public required bool? InferClosedTypePolymorphism { get; init; } public JsonKnownNamingPolicy? GetEffectivePropertyNamingPolicy() => PropertyNamingPolicy ?? (Defaults is JsonSerializerDefaults.Web ? JsonKnownNamingPolicy.CamelCase : null); } }