Переработаны методы.
This commit is contained in:
@@ -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);
|
||||
}
|
||||
}
|
||||
@@ -1,85 +0,0 @@
|
||||
namespace Lattice.Core.DragDrop.Extensions;
|
||||
|
||||
/// <summary>
|
||||
/// Методы расширения для регистрации сервисов перетаскивания.
|
||||
/// </summary>
|
||||
public static class ServiceCollectionExtensions
|
||||
{
|
||||
/// <summary>
|
||||
/// Добавляет сервис перетаскивания.
|
||||
/// </summary>
|
||||
/// <param name="serviceCollection">Коллекция сервисов.</param>
|
||||
/// <returns>Коллекция сервисов.</returns>
|
||||
/// <remarks>
|
||||
/// Реализация DI должна быть предоставлена конкретным приложением.
|
||||
/// </remarks>
|
||||
public static object AddDragDropService(this object serviceCollection)
|
||||
{
|
||||
// Реализация регистрации сервиса должна быть в конкретном приложении
|
||||
// Это абстрактный метод для поддержки DI без зависимостей
|
||||
return serviceCollection;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Добавляет сервис перетаскивания с конфигурацией.
|
||||
/// </summary>
|
||||
/// <param name="serviceCollection">Коллекция сервисов.</param>
|
||||
/// <param name="configure">Действие конфигурации.</param>
|
||||
/// <returns>Коллекция сервисов.</returns>
|
||||
public static object AddDragDropService(
|
||||
this object serviceCollection,
|
||||
Action<DragDropServiceOptions> configure)
|
||||
{
|
||||
var options = new DragDropServiceOptions();
|
||||
configure(options);
|
||||
|
||||
// Реализация регистрации с опциями должна быть в конкретном приложении
|
||||
return serviceCollection;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Опции конфигурации сервиса перетаскивания.
|
||||
/// </summary>
|
||||
public class DragDropServiceOptions
|
||||
{
|
||||
/// <summary>
|
||||
/// Порог начала перетаскивания в пикселях.
|
||||
/// </summary>
|
||||
public double DragStartThreshold { get; set; } = 3.0;
|
||||
|
||||
/// <summary>
|
||||
/// Включить ведение журнала операций.
|
||||
/// </summary>
|
||||
public bool EnableLogging { get; set; } = false;
|
||||
|
||||
/// <summary>
|
||||
/// Включить автоматическую очистку неиспользуемых целей.
|
||||
/// </summary>
|
||||
public bool EnableAutoCleanup { get; set; } = true;
|
||||
|
||||
/// <summary>
|
||||
/// Интервал автоматической очистки в миллисекундах.
|
||||
/// </summary>
|
||||
public int AutoCleanupInterval { get; set; } = 60000;
|
||||
|
||||
/// <summary>
|
||||
/// Включить асинхронную обработку операций.
|
||||
/// </summary>
|
||||
public bool EnableAsyncOperations { get; set; } = true;
|
||||
|
||||
/// <summary>
|
||||
/// Время ожидания асинхронных операций в миллисекундах.
|
||||
/// </summary>
|
||||
public int AsyncOperationTimeout { get; set; } = 5000;
|
||||
|
||||
/// <summary>
|
||||
/// Включить сбор статистики.
|
||||
/// </summary>
|
||||
public bool EnableStatistics { get; set; } = true;
|
||||
|
||||
/// <summary>
|
||||
/// Включить проверку типов данных.
|
||||
/// </summary>
|
||||
public bool EnableTypeChecking { get; set; } = true;
|
||||
}
|
||||
Reference in New Issue
Block a user