Skip to content

Commit

Permalink
dont pollute global converters (#992)
Browse files Browse the repository at this point in the history
  • Loading branch information
SimonCropp authored Sep 11, 2023
1 parent 6d3a04c commit caa7887
Show file tree
Hide file tree
Showing 3 changed files with 53 additions and 34 deletions.
2 changes: 1 addition & 1 deletion docs/serializer-settings.md
Original file line number Diff line number Diff line change
Expand Up @@ -93,7 +93,7 @@ var settings = new JsonSerializerSettings
DefaultValueHandling = DefaultValueHandling.Ignore,
};
```
<sup><a href='/src/Verify/Serialization/SerializationSettings.cs#L87-L96' title='Snippet source file'>snippet source</a> | <a href='#snippet-defaultserialization' title='Start of snippet'>anchor</a></sup>
<sup><a href='/src/Verify/Serialization/SerializationSettings.cs#L79-L88' title='Snippet source file'>snippet source</a> | <a href='#snippet-defaultserialization' title='Start of snippet'>anchor</a></sup>
<!-- endSnippet -->


Expand Down
2 changes: 1 addition & 1 deletion src/Directory.Build.props
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
<Project>
<PropertyGroup>
<NoWarn>CS1591;CS0649;xUnit1026;xUnit1013;msb3277;CS0436;CS1573;NU1901;NU1902;NU1903</NoWarn>
<Version>21.1.0</Version>
<Version>21.1.1</Version>
<ImplicitUsings>enable</ImplicitUsings>
<LangVersion>preview</LangVersion>
<SuppressTfmSupportBuildWarnings>true</SuppressTfmSupportBuildWarnings>
Expand Down
83 changes: 51 additions & 32 deletions src/Verify/Serialization/SerializationSettings.cs
Original file line number Diff line number Diff line change
Expand Up @@ -4,40 +4,32 @@

partial class SerializationSettings
{
static SerializationSettings()
{
var converters = DefaultContractResolver.Converters;
converters.Remove(converters.OfType<Argon.KeyValuePairConverter>().Single());
converters.AddRange(new JsonConverter[]
{
new JArrayConverter(),
new JObjectConverter(),
new KeyValuePairConverter(),
new InfoBuilder.Converter(),
static JArrayConverter jArrayConverter = new();
static JObjectConverter jObjectConverter = new();
static KeyValuePairConverter keyValuePairConverter = new();
static InfoBuilder.Converter infoConverter = new();
#if NET6_0_OR_GREATER
new TimeConverter(),
new DateConverter(),
static TimeConverter timeConverter = new();
static DateConverter dateConverter = new();
#endif
new StringEnumConverter(),
new DelegateConverter(),
new TargetInvocationExceptionConverter(),
new ExpressionConverter(),
new TypeJsonConverter(),
new MethodInfoConverter(),
new FieldInfoConverter(),
new ConstructorInfoConverter(),
new ParameterInfoConverter(),
new PropertyInfoConverter(),
new ClaimConverter(),
new AggregateExceptionConverter(),
new ClaimsPrincipalConverter(),
new ClaimsIdentityConverter(),
new NameValueCollectionConverter(),
new StringDictionaryConverter(),
new TaskConverter(),
new ValueTaskConverter(),
});
}
static StringEnumConverter stringEnumConverter = new();
static DelegateConverter delegateConverter = new();
static TargetInvocationExceptionConverter targetInvocationExceptionConverter = new();
static ExpressionConverter expressionConverter = new();
static TypeJsonConverter typeJsonConverter = new();
static MethodInfoConverter methodInfoConverter = new();
static FieldInfoConverter fieldInfoConverter = new();
static ConstructorInfoConverter constructorInfoConverter = new();
static ParameterInfoConverter parameterInfoConverter = new();
static PropertyInfoConverter propertyInfoConverter = new();
static ClaimConverter claimConverter = new();
static AggregateExceptionConverter aggregateExceptionConverter = new();
static ClaimsPrincipalConverter claimsPrincipalConverter = new();
static ClaimsIdentityConverter claimsIdentityConverter = new();
static NameValueCollectionConverter nameValueCollectionConverter = new();
static StringDictionaryConverter stringDictionaryConverter = new();
static TaskConverter taskConverter = new();
static ValueTaskConverter valueTaskConverter = new();

JsonSerializerSettings jsonSettings;

Expand Down Expand Up @@ -98,6 +90,33 @@ JsonSerializerSettings BuildSettings()
settings.SerializationBinder = ShortNameBinder.Instance;

settings.ContractResolver = new CustomContractResolver(this);
var converters = settings.Converters;
converters.Add(aggregateExceptionConverter);
converters.Add(infoConverter);
#if NET6_0_OR_GREATER
converters.Add(dateConverter);
converters.Add(timeConverter);
#endif
converters.Add(stringEnumConverter);
converters.Add(expressionConverter);
converters.Add(delegateConverter);
converters.Add(targetInvocationExceptionConverter);
converters.Add(typeJsonConverter);
converters.Add(methodInfoConverter);
converters.Add(fieldInfoConverter);
converters.Add(constructorInfoConverter);
converters.Add(propertyInfoConverter);
converters.Add(parameterInfoConverter);
converters.Add(claimConverter);
converters.Add(claimsIdentityConverter);
converters.Add(taskConverter);
converters.Add(valueTaskConverter);
converters.Add(claimsPrincipalConverter);
converters.Add(jArrayConverter);
converters.Add(jObjectConverter);
converters.Add(nameValueCollectionConverter);
converters.Add(stringDictionaryConverter);
converters.Add(keyValuePairConverter);
foreach (var extraSetting in extraSettings)
{
extraSetting(settings);
Expand Down

0 comments on commit caa7887

Please sign in to comment.