public ValidationRule(IValidationTarget target, Func<RuleResult> validateDelegate, Func<Task<RuleResult>> asyncValidateAction)
{
Guard.NotNull(target, nameof(target));
Guard.Assert(validateDelegate != null || asyncValidateAction != null,
"validateDelegate != null || asyncValidateAction != null");
Target = target;
ValidateDelegate = validateDelegate;
AsyncValidateAction = asyncValidateAction ?? (() => Task.Run(() => ValidateDelegate()));
Settings = new ValidationRuleSettings();
}