Repository navigation
Expand file tree
/
Copy pathJsonSourceGenerationOptionsAttribute.cs
More file actions
139 lines (117 loc) · 5.97 KB
/
Copy pathJsonSourceGenerationOptionsAttribute.cs
File metadata and controls
139 lines (117 loc) · 5.97 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.
namespace System.Text.Json.Serialization
{
/// <summary>
/// Specifies compile-time source generator configuration when applied to <see cref="JsonSerializerContext"/> class declarations.
/// </summary>
[AttributeUsage(AttributeTargets.Class, AllowMultiple = false)]
#if BUILDING_SOURCE_GENERATOR
internal
#else
public
#endif
sealed class JsonSourceGenerationOptionsAttribute : JsonAttribute
{
/// <summary>
/// Constructs a new <see cref="JsonSourceGenerationOptionsAttribute"/> instance.
/// </summary>
public JsonSourceGenerationOptionsAttribute() { }
/// <summary>
/// Constructs a new <see cref="JsonSourceGenerationOptionsAttribute"/> instance with a predefined set of options determined by the specified <see cref="JsonSerializerDefaults"/>.
/// </summary>
/// <param name="defaults">The <see cref="JsonSerializerDefaults"/> to reason about.</param>
/// <exception cref="ArgumentOutOfRangeException">Invalid <paramref name="defaults"/> parameter.</exception>
public JsonSourceGenerationOptionsAttribute(JsonSerializerDefaults defaults)
{
// Constructor kept in sync with equivalent overload in JsonSerializerOptions
if (defaults is JsonSerializerDefaults.Web)
{
PropertyNameCaseInsensitive = true;
PropertyNamingPolicy = JsonKnownNamingPolicy.CamelCase;
NumberHandling = JsonNumberHandling.AllowReadingFromString;
}
else if (defaults is not JsonSerializerDefaults.General)
{
throw new ArgumentOutOfRangeException(nameof(defaults));
}
}
/// <summary>
/// Specifies the default value of <see cref="JsonSerializerOptions.AllowTrailingCommas"/> when set.
/// </summary>
public bool AllowTrailingCommas { get; set; }
/// <summary>
/// Specifies the default value of <see cref="JsonSerializerOptions.Converters"/> when set.
/// </summary>
public Type[]? Converters { get; set; }
/// <summary>
/// Specifies the default value of <see cref="JsonSerializerOptions.DefaultBufferSize"/> when set.
/// </summary>
public int DefaultBufferSize { get; set; }
/// <summary>
/// Specifies the default value of <see cref="JsonSerializerOptions.DefaultIgnoreCondition"/> when set.
/// </summary>
public JsonIgnoreCondition DefaultIgnoreCondition { get; set; }
/// <summary>
/// Specifies the default value of <see cref="JsonSerializerOptions.DictionaryKeyPolicy"/> when set.
/// </summary>
public JsonKnownNamingPolicy DictionaryKeyPolicy { get; set; }
/// <summary>
/// Specifies the default value of <see cref="JsonSerializerOptions.IgnoreReadOnlyFields"/> when set.
/// </summary>
public bool IgnoreReadOnlyFields { get; set; }
/// <summary>
/// Specifies the default value of <see cref="JsonSerializerOptions.IgnoreReadOnlyProperties"/> when set.
/// </summary>
public bool IgnoreReadOnlyProperties { get; set; }
/// <summary>
/// Specifies the default value of <see cref="JsonSerializerOptions.IncludeFields"/> when set.
/// </summary>
public bool IncludeFields { get; set; }
/// <summary>
/// Specifies the default value of <see cref="JsonSerializerOptions.MaxDepth"/> when set.
/// </summary>
public int MaxDepth { get; set; }
/// <summary>
/// Specifies the default value of <see cref="JsonSerializerOptions.NumberHandling"/> when set.
/// </summary>
public JsonNumberHandling NumberHandling { get; set; }
/// <summary>
/// Specifies the default value of <see cref="JsonSerializerOptions.PreferredObjectCreationHandling"/> when set.
/// </summary>
public JsonObjectCreationHandling PreferredObjectCreationHandling { get; set; }
/// <summary>
/// Specifies the default value of <see cref="JsonSerializerOptions.PropertyNameCaseInsensitive"/> when set.
/// </summary>
public bool PropertyNameCaseInsensitive { get; set; }
/// <summary>
/// Specifies the default value of <see cref="JsonSerializerOptions.PropertyNamingPolicy"/> when set.
/// </summary>
public JsonKnownNamingPolicy PropertyNamingPolicy { get; set; }
/// <summary>
/// Specifies the default value of <see cref="JsonSerializerOptions.ReadCommentHandling"/> when set.
/// </summary>
public JsonCommentHandling ReadCommentHandling { get; set; }
/// <summary>
/// Specifies the default value of <see cref="JsonSerializerOptions.UnknownTypeHandling"/> when set.
/// </summary>
public JsonUnknownTypeHandling UnknownTypeHandling { get; set; }
/// <summary>
/// Specifies the default value of <see cref="JsonSerializerOptions.UnmappedMemberHandling"/> when set.
/// </summary>
public JsonUnmappedMemberHandling UnmappedMemberHandling { get; set; }
/// <summary>
/// Specifies the default value of <see cref="JsonSerializerOptions.WriteIndented"/> when set.
/// </summary>
public bool WriteIndented { get; set; }
/// <summary>
/// Specifies the default source generation mode for type declarations that don't set a <see cref="JsonSerializableAttribute.GenerationMode"/>.
/// </summary>
public JsonSourceGenerationMode GenerationMode { get; set; }
/// <summary>
/// Instructs the source generator to default to <see cref="JsonStringEnumConverter"/>
/// instead of numeric serialization for all enum types encountered in its type graph.
/// </summary>
public bool UseStringEnumConverter { get; set; }
}
}