public class CommandValidationProcessor<TCommand> : IRequestPreProcessor<TCommand> where TCommand : class
{
private readonly IValidator<TCommand> _validator;
public CommandValidationProcessor(IValidator<TCommand> validator)
{
_validator = validator;
}
public async Task Process(TCommand command, CancellationToken cancellationToken)
{
var result = await _validator.ValidateAsync(command, cancellationToken);
if (!result.IsValid)
{
var error = result.Errors.First();
throw new ApplicationException(Invalid, new(error.ErrorCode, error.ErrorMessage));
}
}
}
Both methods are throwing an exception as below:
System.ArgumentException: 'Cannot instantiate implementation type 'Company.Framework.Application.Validation.Processors.CommandValidationProcessor1[TCommand]' for service type 'MediatR.Pipeline.IRequestPreProcessor1[TCommand]'.'
Method 1:
Method 2:
Both methods are throwing an exception as below:
System.ArgumentException: 'Cannot instantiate implementation type 'Company.Framework.Application.Validation.Processors.CommandValidationProcessor1[TCommand]' for service type 'MediatR.Pipeline.IRequestPreProcessor1[TCommand]'.'