using AsbCloudApp.Data; using System.Collections.Generic; using System.Diagnostics.CodeAnalysis; namespace AsbCloudApp.Comparators; /// <summary> /// Компаратор для сравнения сущностей по ID /// </summary> public class ComparerIId : IComparer<IId>, IEqualityComparer<IId> { private static readonly ComparerIId instance = new(); private ComparerIId() { } /// <summary> /// Singleton ссылка /// </summary> /// <returns></returns> public static ComparerIId GetInstance() => instance; /// <summary> /// /// </summary> /// <param name="x"></param> /// <param name="y"></param> /// <returns></returns> public int Compare(IId? x, IId? y) => (x?.Id??0).CompareTo(y?.Id??0); /// <summary> /// /// </summary> /// <param name="x"></param> /// <param name="y"></param> /// <returns></returns> public bool Equals(IId? x, IId? y) { if (x is not null && y is not null) return x.Id == y.Id; return x == y; } /// <summary> /// /// </summary> /// <param name="obj"></param> /// <returns></returns> public int GetHashCode([DisallowNull] IId obj) => obj.GetHashCode(); }