You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
recyclarr/src/Recyclarr.Common/GenericEqualityComparer.cs

39 lines
784 B

using System.Diagnostics.CodeAnalysis;
namespace Recyclarr.Common;
[SuppressMessage("ReSharper", "ConvertIfStatementToReturnStatement")]
public sealed class GenericEqualityComparer<T>(Func<T, T, bool> equalsPredicate, Func<T, int> hashPredicate)
: IEqualityComparer<T>
{
public bool Equals(T? x, T? y)
{
if (ReferenceEquals(x, y))
{
return true;
}
if (ReferenceEquals(x, null))
{
return false;
}
if (ReferenceEquals(y, null))
{
return false;
}
if (x.GetType() != y.GetType())
{
return false;
}
return equalsPredicate(x, y);
}
public int GetHashCode(T obj)
{
return hashPredicate(obj);
}
}