Files
FileTime2/src/Core/FileTime.Core.Abstraction/ContentAccess/IItemMover.cs
2023-07-18 05:52:15 +02:00

24 lines
858 B
C#

using FileTime.Core.Models;
namespace FileTime.Core.ContentAccess;
public interface IItemMover
{
Task RenameAsync(IContentProvider contentProvider, FullName fullName, FullName newPath);
}
public interface IItemMover<in TContentProvider> : IItemMover where TContentProvider : IContentProvider
{
Task RenameAsync(TContentProvider contentProvider, FullName fullName, FullName newPath);
async Task IItemMover.RenameAsync(IContentProvider contentProvider, FullName fullName, FullName newPath)
{
if(contentProvider is not TContentProvider provider)
throw new ArgumentException(
$"Content provider ({contentProvider.GetType()}) is not the required type ({typeof(TContentProvider)}) ",
nameof(contentProvider)
);
await RenameAsync(provider, fullName, newPath);
}
}