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()