Files
FileTime2/src/AppCommon/FileTime.App.Core.Abstraction/Services/UserCommandHandler/AggregatedUserCommandHandler.cs
2023-08-02 12:40:40 +02:00

26 lines
963 B
C#

namespace FileTime.App.Core.Services.UserCommandHandler;
public abstract class AggregatedUserCommandHandler : IUserCommandHandler
{
private readonly List<IUserCommandHandler> _userCommandHandlers = new();
public bool CanHandleCommand(UserCommand.IUserCommand command) => _userCommandHandlers.Any(h => h.CanHandleCommand(command));
public async Task HandleCommandAsync(UserCommand.IUserCommand command)
{
var handler = _userCommandHandlers.Find(h => h.CanHandleCommand(command));
if (handler is null) return;
await handler.HandleCommandAsync(command);
}
protected void AddCommandHandler(IUserCommandHandler userCommandHandler) => _userCommandHandlers.Add(userCommandHandler);
protected void AddCommandHandler(IEnumerable<IUserCommandHandler> commandHandlers)
{
foreach (var userCommandHandler in commandHandlers)
{
AddCommandHandler(userCommandHandler);
}
}
}