Переработаны методы.

This commit is contained in:
2026-01-25 02:37:16 +03:00
parent a6ee6fcb36
commit be12154262
17 changed files with 897 additions and 1116 deletions

View File

@@ -1,4 +1,7 @@
namespace Lattice.Core.DragDrop.Extensions;
using Lattice.Core.DragDrop.Enums;
using Lattice.Core.Geometry;
namespace Lattice.Core.DragDrop.Extensions;
/// <summary>
/// Методы расширения для DropInfo.
@@ -8,6 +11,9 @@ public static class DropInfoExtensions
/// <summary>
/// Проверяет, могут ли данные быть приведены к указанному типу.
/// </summary>
/// <typeparam name="T">Тип данных для проверки.</typeparam>
/// <param name="dropInfo">Информация о сбросе.</param>
/// <returns>true, если данные могут быть приведены к типу T; в противном случае — false.</returns>
public static bool CanAccept<T>(this Models.DropInfo dropInfo)
where T : class
{
@@ -17,6 +23,9 @@ public static class DropInfoExtensions
/// <summary>
/// Пытается получить данные как указанный тип.
/// </summary>
/// <typeparam name="T">Тип, к которому нужно привести данные.</typeparam>
/// <param name="dropInfo">Информация о сбросе.</param>
/// <returns>Данные как тип T или null.</returns>
public static T? GetDataAs<T>(this Models.DropInfo dropInfo)
where T : class
{
@@ -26,6 +35,10 @@ public static class DropInfoExtensions
/// <summary>
/// Получает данные как указанный тип или выбрасывает исключение.
/// </summary>
/// <typeparam name="T">Тип, к которому нужно привести данные.</typeparam>
/// <param name="dropInfo">Информация о сбросе.</param>
/// <returns>Данные как тип T.</returns>
/// <exception cref="InvalidCastException">Выбрасывается, если данные не могут быть приведены к типу T.</exception>
public static T GetRequiredDataAs<T>(this Models.DropInfo dropInfo)
where T : class
{
@@ -40,8 +53,22 @@ public static class DropInfoExtensions
/// <summary>
/// Проверяет, содержится ли позиция в указанных границах.
/// </summary>
public static bool IsInBounds(this Models.DropInfo dropInfo, Geometry.Rect bounds)
/// <param name="dropInfo">Информация о сбросе.</param>
/// <param name="bounds">Границы для проверки.</param>
/// <returns>true, если позиция находится в границах; в противном случае — false.</returns>
public static bool IsInBounds(this Models.DropInfo dropInfo, Rect bounds)
{
return bounds.Contains(dropInfo.Position);
}
/// <summary>
/// Проверяет можно ли добавить эффект перетаскивания.
/// </summary>
/// <param name="dropInfo"></param>
/// <param name="effect"></param>
/// <returns></returns>
public static bool CanAcceptEffect(this Models.DropInfo dropInfo, DragDropEffects effect)
{
return dropInfo.AllowedEffects.HasEffect(effect);
}
}