diff --git a/src/Microsoft.AspNetCore.Mvc.Abstractions/ModelBinding/ModelMetadata.cs b/src/Microsoft.AspNetCore.Mvc.Abstractions/ModelBinding/ModelMetadata.cs index 7de72be66b..ec478c7b02 100644 --- a/src/Microsoft.AspNetCore.Mvc.Abstractions/ModelBinding/ModelMetadata.cs +++ b/src/Microsoft.AspNetCore.Mvc.Abstractions/ModelBinding/ModelMetadata.cs @@ -23,6 +23,8 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding /// public static readonly int DefaultOrder = 10000; + private int? _hashCode; + /// /// Creates a new . /// @@ -405,7 +407,13 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding /// public override int GetHashCode() { - return Identity.GetHashCode(); + // Normaly caching the hashcode would be dangerous, but Identity is deeply immutable so this is safe. + if (_hashCode == null) + { + _hashCode = Identity.GetHashCode(); + } + + return _hashCode.Value; } private void InitializeTypeInformation()