85 lines
3.3 KiB
C#
85 lines
3.3 KiB
C#
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;
|
||
} |