From 07e975a0ed5d7d8bd3f5cd83d54d1d59a12d7e62 Mon Sep 17 00:00:00 2001 From: James Newton-King Date: Tue, 6 Jun 2017 17:52:18 +1200 Subject: [PATCH] Return a shared contract resolver Return a shared contract resolver from CreateSerializerSettings for performance --- .../JsonSerializerSettingsProvider.cs | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/src/Microsoft.AspNetCore.Mvc.Formatters.Json/JsonSerializerSettingsProvider.cs b/src/Microsoft.AspNetCore.Mvc.Formatters.Json/JsonSerializerSettingsProvider.cs index 8dc4bf2d5c..8b6761559d 100644 --- a/src/Microsoft.AspNetCore.Mvc.Formatters.Json/JsonSerializerSettingsProvider.cs +++ b/src/Microsoft.AspNetCore.Mvc.Formatters.Json/JsonSerializerSettingsProvider.cs @@ -13,6 +13,13 @@ namespace Microsoft.AspNetCore.Mvc.Formatters { private const int DefaultMaxDepth = 32; + // return shared resolver by default for perf so slow reflection logic is cached once + // developers can set their own resolver after the settings are returned if desired + private static readonly DefaultContractResolver SharedContractResolver = new DefaultContractResolver + { + NamingStrategy = new CamelCaseNamingStrategy(), + }; + /// /// Creates default . /// @@ -21,10 +28,7 @@ namespace Microsoft.AspNetCore.Mvc.Formatters { return new JsonSerializerSettings { - ContractResolver = new DefaultContractResolver - { - NamingStrategy = new CamelCaseNamingStrategy(), - }, + ContractResolver = SharedContractResolver, MissingMemberHandling = MissingMemberHandling.Ignore, @@ -38,4 +42,4 @@ namespace Microsoft.AspNetCore.Mvc.Formatters }; } } -} \ No newline at end of file +}