Убраны синхронные методы
This commit is contained in:
47
Lattice.Core.DragDrop/Extensions/DropInfoExtensions.cs
Normal file
47
Lattice.Core.DragDrop/Extensions/DropInfoExtensions.cs
Normal file
@@ -0,0 +1,47 @@
|
||||
namespace Lattice.Core.DragDrop.Extensions;
|
||||
|
||||
/// <summary>
|
||||
/// Методы расширения для DropInfo.
|
||||
/// </summary>
|
||||
public static class DropInfoExtensions
|
||||
{
|
||||
/// <summary>
|
||||
/// Проверяет, могут ли данные быть приведены к указанному типу.
|
||||
/// </summary>
|
||||
public static bool CanAccept<T>(this Models.DropInfo dropInfo)
|
||||
where T : class
|
||||
{
|
||||
return dropInfo.Data is T;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Пытается получить данные как указанный тип.
|
||||
/// </summary>
|
||||
public static T? GetDataAs<T>(this Models.DropInfo dropInfo)
|
||||
where T : class
|
||||
{
|
||||
return dropInfo.Data as T;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Получает данные как указанный тип или выбрасывает исключение.
|
||||
/// </summary>
|
||||
public static T GetRequiredDataAs<T>(this Models.DropInfo dropInfo)
|
||||
where T : class
|
||||
{
|
||||
if (dropInfo.Data is not T data)
|
||||
{
|
||||
throw new InvalidCastException(
|
||||
$"Ожидался тип {typeof(T).Name}, но получен {dropInfo.Data?.GetType().Name ?? "null"}");
|
||||
}
|
||||
return data;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Проверяет, содержится ли позиция в указанных границах.
|
||||
/// </summary>
|
||||
public static bool IsInBounds(this Models.DropInfo dropInfo, Geometry.Rect bounds)
|
||||
{
|
||||
return bounds.Contains(dropInfo.Position);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user