using System.Threading.Tasks;
namespace AAH.Mutaties.Order.Application.SeedWork
public abstract class UseCaseHandlerBase<T>
public async Task UitvoerenAsync(T useCase)
_ = useCase ?? throw new ArgumentNullException(nameof(useCase));
await UitvoerenBusinessLogica(useCase);
protected virtual Task UitvoerenBusinessLogica(T useCase)
throw new NotImplementedException();
protected virtual void LogStart(T useCase)
throw new NotImplementedException();
protected virtual void LogEind(T useCase)
throw new NotImplementedException();
protected virtual void LogError(T useCase, Exception exception)
throw new NotImplementedException();
public abstract class UseCaseHandlerBase<T, TR>
public async Task<TR> UitvoerenAsync(T useCase)
_ = useCase ?? throw new ArgumentNullException(nameof(useCase));
var x = await UitvoerenBusinessLogica(useCase);
protected virtual Task<TR> UitvoerenBusinessLogica(T useCase)
throw new NotImplementedException();
protected virtual void LogStart(T useCase)
throw new NotImplementedException();
protected virtual void LogEind(T useCase, TR result)
throw new NotImplementedException();
protected virtual void LogError(T useCase, Exception exception)
throw new NotImplementedException();
public abstract class CommandUseCaseHandlerBase<T> : UseCaseHandlerBase<T>, ICommandUseCaseHandler<T> where T : ICommandUseCase
public abstract class EventUseCaseHandlerBase<T> : UseCaseHandlerBase<T>, IEventUseCaseHandler<T> where T : IEventUseCase
public abstract class CommandUseCaseHandlerBase<T, TR> : UseCaseHandlerBase<T, TR>, ICommandUseCaseHandler<T, TR> where T : ICommandUseCase
public abstract class QueryUseCaseHandlerBase<T, TR> : UseCaseHandlerBase<T, TR>, IQueryUseCaseHandler<T, TR> where T : IQueryUseCase