Return a shared contract resolver

Return a shared contract resolver from CreateSerializerSettings for performance
This commit is contained in:
James Newton-King 2017-06-06 17:52:18 +12:00 committed by GitHub
parent 628dfc39c1
commit 07e975a0ed
1 changed files with 9 additions and 5 deletions

View File

@ -13,6 +13,13 @@ namespace Microsoft.AspNetCore.Mvc.Formatters
{ {
private const int DefaultMaxDepth = 32; 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(),
};
/// <summary> /// <summary>
/// Creates default <see cref="JsonSerializerSettings"/>. /// Creates default <see cref="JsonSerializerSettings"/>.
/// </summary> /// </summary>
@ -21,10 +28,7 @@ namespace Microsoft.AspNetCore.Mvc.Formatters
{ {
return new JsonSerializerSettings return new JsonSerializerSettings
{ {
ContractResolver = new DefaultContractResolver ContractResolver = SharedContractResolver,
{
NamingStrategy = new CamelCaseNamingStrategy(),
},
MissingMemberHandling = MissingMemberHandling.Ignore, MissingMemberHandling = MissingMemberHandling.Ignore,