From 382dbf997ba97067b4e86924aae2158fc5956c43 Mon Sep 17 00:00:00 2001 From: Jonathan Peppers Date: Fri, 10 Feb 2023 09:23:41 -0600 Subject: [PATCH] [core] `WeakEventManager+Subscription` needs `IEquatable` Context: https://github.com/dotnet/maui/pull/13232 This is a smaller backport of 505b93a for .NET 7 servicing. --- src/Core/src/WeakEventManager.cs | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/Core/src/WeakEventManager.cs b/src/Core/src/WeakEventManager.cs index 8c5ea0f5e6fb..413c586f7ed9 100644 --- a/src/Core/src/WeakEventManager.cs +++ b/src/Core/src/WeakEventManager.cs @@ -137,7 +137,7 @@ void RemoveEventHandler(string eventName, object? handlerTarget, MemberInfo meth } } - struct Subscription + readonly struct Subscription : IEquatable { /// public Subscription(WeakReference? subscriber, MethodInfo handler) @@ -148,6 +148,12 @@ public Subscription(WeakReference? subscriber, MethodInfo handler) public readonly WeakReference? Subscriber; public readonly MethodInfo Handler; + + public bool Equals(Subscription other) => Subscriber == other.Subscriber && Handler == other.Handler; + + public override bool Equals(object? obj) => obj is Subscription other && Equals(other); + + public override int GetHashCode() => Subscriber?.GetHashCode() ?? 0 ^ Handler.GetHashCode(); } } }