public sealed class PeValidator : IPeValidator
{
    private readonly IEnumerable<IValidationRule> _rules;

    public PeValidator(IEnumerable<IValidationRule> rules)
    {
        _rules = rules;
    }

    public async Task<IReadOnlyList<ValidationResult>> ValidateAsync(PeImageInfo peInfo, CancellationToken cancellationToken)
    {
        var results = new List<ValidationResult>();
        foreach (var rule in _rules)
        {
            cancellationToken.ThrowIfCancellationRequested();
            results.Add(await rule.ValidateAsync(peInfo, cancellationToken).ConfigureAwait(false));
        }

        return results;
    }
}