using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Diagnostics.CodeAnalysis; using ProjectGasolineTanker.Drawings; using ProjectGasolineTanker.Entities; namespace ProjectGasolineTanker.Generics { internal class DrawingTruckEqutables : IEqualityComparer { public bool Equals(DrawingTruck? x, DrawingTruck? y) { if (x == null && x.EntityTruck == null) throw new ArgumentNullException(nameof(x)); if (y == null && y.EntityTruck == null) throw new ArgumentNullException(nameof(y)); if ((x.GetType().Name != y.GetType().Name)) return false; if (x.EntityTruck.Speed != y.EntityTruck.Speed) return false; if (x.EntityTruck.Weight != y.EntityTruck.Weight) return false; if (x.EntityTruck.BodyColor != y.EntityTruck.BodyColor) return false; if (x is DrawingGasolineTanker && y is DrawingGasolineTanker) { var xGasTruck = (EntityGasolineTanker)x.EntityTruck; var yGasTruck = (EntityGasolineTanker)y.EntityTruck; if (xGasTruck.Add_Color != yGasTruck.Add_Color) return false; if (xGasTruck.IsTank != yGasTruck.IsTank) return false; if (xGasTruck.IsWheel != yGasTruck.IsWheel) return false; } return true; } public int GetHashCode([DisallowNull] DrawingTruck? obj) { return obj.GetHashCode(); } } }