Добавлен DrawningLinerEqutables

This commit is contained in:
gettterot 2024-06-10 05:33:55 +04:00
parent 392189d5b2
commit 50755f3d53
2 changed files with 81 additions and 2 deletions

View File

@ -21,16 +21,18 @@
/// Добавление объекта в коллекцию /// Добавление объекта в коллекцию
/// </summary> /// </summary>
/// <param name="obj">Добавляемый объект</param> /// <param name="obj">Добавляемый объект</param>
/// /// <param name="comparer">Сравнение двух объектов</param>
/// <returns>true - вставка прошла удачно, false - вставка не удалась</returns> /// <returns>true - вставка прошла удачно, false - вставка не удалась</returns>
int Insert(T obj); int Insert(T obj, IEqualityComparer<T?>? comparer = null);
/// <summary> /// <summary>
/// Добавление объекта в коллекцию на конкретную позицию /// Добавление объекта в коллекцию на конкретную позицию
/// </summary> /// </summary>
/// <param name="obj">Добавляемый объект</param> /// <param name="obj">Добавляемый объект</param>
/// <param name="position">Позиция</param> /// <param name="position">Позиция</param>
/// /// <param name="comparer">Сравнение двух объектов</param>
/// <returns>true - вставка прошла удачно, false - вставка не удалась</returns> /// <returns>true - вставка прошла удачно, false - вставка не удалась</returns>
int Insert(T obj, int position); int Insert(T obj, int position, IEqualityComparer<T?>? comparer = null);
/// <summary> /// <summary>
/// Удаление объекта из коллекции с конкретной позиции /// Удаление объекта из коллекции с конкретной позиции
@ -56,5 +58,11 @@
/// </summary> /// </summary>
/// <returns>Поэлементый вывод элементов коллекции</returns> /// <returns>Поэлементый вывод элементов коллекции</returns>
IEnumerable<T?> GetItems(); IEnumerable<T?> GetItems();
/// <summary>
/// Сортировка коллекции
/// </summary>
/// <param name="comparer"></param>
void CollectionSort(IComparer<T?> comparer);
} }
} }

View File

@ -0,0 +1,71 @@
using ProjectLiner.Drawnings;
using ProjectLiner.Entities;
using System;
using System.Collections.Generic;
using System.Diagnostics.CodeAnalysis;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
/// <summary>
/// Реализация сравнения двух объектов класса-прорисовки
/// </summary>
public class DrawningLinerEqutables : IEqualityComparer<DrawningCommonLiner?>
{
public bool Equals(DrawningCommonLiner x, DrawningCommonLiner? y)
{
if (x == null || x.EntityCommonLiner == null)
{
return false;
}
if (y == null || y.EntityCommonLiner == null)
{
return false;
}
if (x.GetType().Name != y.GetType().Name)
{
return false;
}
if (x.EntityCommonLiner.Speed != y.EntityCommonLiner.Speed)
{
return false;
}
if (x.EntityCommonLiner.Weight != y.EntityCommonLiner.Weight)
{
return false;
}
if (x.EntityCommonLiner.BodyColor != y.EntityCommonLiner.BodyColor)
{
return false;
}
if (x is DrawningLiner && y is DrawningLiner)
{
if (((EntityLiner)x.EntityCommonLiner).AdditionalColor !=
((EntityLiner)y.EntityCommonLiner).AdditionalColor)
{
return false;
}
if (((EntityLiner)x.EntityCommonLiner).Boats !=
((EntityLiner)y.EntityCommonLiner).Boats)
{
return false;
}
if (((EntityLiner)x.EntityCommonLiner).Anchor !=
((EntityLiner)y.EntityCommonLiner).Anchor)
{
return false;
}
if (((EntityLiner)x.EntityCommonLiner).Pipe !=
((EntityLiner)y.EntityCommonLiner).Pipe)
{
return false;
}
}
return true;
}
public int GetHashCode([DisallowNull] DrawningCommonLiner obj)
{
return obj.GetHashCode();
}
}