/
PredicateValidation.cs
30 lines (27 loc) · 1.14 KB
/
PredicateValidation.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
using System;
namespace NKristek.Smaragd.Validation
{
/// <inheritdoc />
/// <remarks>
/// Validates a given value using a predicate.
/// </remarks>
public sealed class PredicateValidation<TValue>
: IValidation<TValue, bool>
{
private readonly Predicate<TValue> _validationPredicate;
/// <summary>
/// Initializes a new instance of the <see cref="PredicateValidation{TValue}"/> class with the <paramref name="validationPredicate"/> which is used to validate the value.
/// </summary>
/// <param name="validationPredicate">A <see cref="Predicate{T}"/> which is used to validate the value.</param>
/// <exception cref="ArgumentNullException"><paramref name="validationPredicate"/> is <see langword="null"/>.</exception>
public PredicateValidation(Predicate<TValue> validationPredicate)
{
_validationPredicate = validationPredicate ?? throw new ArgumentNullException(nameof(validationPredicate));
}
/// <inheritdoc />
public bool Validate(TValue value)
{
return _validationPredicate(value);
}
}
}