/
ValidationExpression.cs
29 lines (25 loc) · 1.25 KB
/
ValidationExpression.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
using System;
using System.ComponentModel.DataAnnotations;
namespace Qowaiv.ComponentModel.Rules
{
/// <summary>Represents a validation rule defined by a delegate expression.</summary>
/// <remarks>
/// Used by <see cref="ValidationRule.For(Func{ValidationContext, bool?}, Func{string}, string[])"/>.
/// </remarks>
internal class ValidationExpression: ValidationRule
{
/// <summary>Creates a new instance of a <see cref="ValidationExpression"/>.</summary>
public ValidationExpression(Func<ValidationContext, bool?> isValid, Func<string> message, params string[] propertyNames):
base(propertyNames)
{
Expression = Guard.NotNull(isValid, nameof(isValid));
ErrorMessageString = Guard.NotNull(message, nameof(message));
}
/// <summary>The expression to execute.</summary>
public Func<ValidationContext, bool?> Expression { get; }
/// <summary>Gets the error message.</summary>
protected override Func<string> ErrorMessageString { get; }
/// <summary>Returns true if the expression did not return false.</summary>
protected override bool IsValid(ValidationContext validationContext) => Expression(validationContext) != false;
}
}