Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mono/aspnetwebstack.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'src/System.Web.Mvc/ExpressionUtil/ParameterExpressionFingerprint.cs')
-rw-r--r--src/System.Web.Mvc/ExpressionUtil/ParameterExpressionFingerprint.cs37
1 files changed, 37 insertions, 0 deletions
diff --git a/src/System.Web.Mvc/ExpressionUtil/ParameterExpressionFingerprint.cs b/src/System.Web.Mvc/ExpressionUtil/ParameterExpressionFingerprint.cs
new file mode 100644
index 00000000..5799d064
--- /dev/null
+++ b/src/System.Web.Mvc/ExpressionUtil/ParameterExpressionFingerprint.cs
@@ -0,0 +1,37 @@
+using System.Diagnostics.CodeAnalysis;
+using System.Linq.Expressions;
+
+#pragma warning disable 659 // overrides AddToHashCodeCombiner instead
+
+namespace System.Web.Mvc.ExpressionUtil
+{
+ // ParameterExpression fingerprint class
+ // Can represent the model parameter or an inner parameter in an open lambda expression
+
+ [SuppressMessage("Microsoft.Usage", "CA2218:OverrideGetHashCodeOnOverridingEquals", Justification = "Overrides AddToHashCodeCombiner() instead.")]
+ internal sealed class ParameterExpressionFingerprint : ExpressionFingerprint
+ {
+ public ParameterExpressionFingerprint(ExpressionType nodeType, Type type, int parameterIndex)
+ : base(nodeType, type)
+ {
+ ParameterIndex = parameterIndex;
+ }
+
+ // Parameter position within the overall expression, used to maintain alpha equivalence.
+ public int ParameterIndex { get; private set; }
+
+ public override bool Equals(object obj)
+ {
+ ParameterExpressionFingerprint other = obj as ParameterExpressionFingerprint;
+ return (other != null)
+ && (this.ParameterIndex == other.ParameterIndex)
+ && this.Equals(other);
+ }
+
+ internal override void AddToHashCodeCombiner(HashCodeCombiner combiner)
+ {
+ combiner.AddInt32(ParameterIndex);
+ base.AddToHashCodeCombiner(combiner);
+ }
+ }
+}