Esempio n. 1
0
        public Task <DryvResultMessage> ValidateAsync(DryvCompiledRule rule, object model, Func <Type, object> objectFactory)
        {
            Compile(rule);

            var options = GetPreevaluationOptions(rule, objectFactory);
            var result  = rule.CompiledValidationExpression(model, options);

            switch (result)
            {
            case DryvResultMessage dryvResult: return(Task.FromResult(dryvResult));

            case Task <DryvResultMessage> task: return(task);

            default: throw new InvalidOperationException($"Compiled validation expression for property {rule.Property.DeclaringType.FullName}.{rule.Property.Name} should return '{result.GetType().FullName}'. Only DryvResultMessage and Task<DryvResultMessage> are allowed.");
            }
        }
Esempio n. 2
0
        public bool IsDisabled(DryvCompiledRule rule, object model, Func <Type, object> objectFactory)
        {
            if (rule.ValidationExpression.ReturnType != typeof(bool))
            {
                return(false);
            }

            Compile(rule);

            var options = GetPreevaluationOptions(rule, objectFactory);

            try
            {
                return((bool)rule.CompiledValidationExpression(model, options));
            }
            catch (Exception ex)
            {
                throw new DryvValidationExecutionException(rule, ex);
            }
        }
Esempio n. 3
0
        public DryvResultMessage Validate(DryvCompiledRule rule, object model, Func <Type, object> objectFactory)
        {
            if (typeof(Task).IsAssignableFrom(rule.ValidationExpression.ReturnType))
            {
                return(DryvResultMessage.Success);
            }

            Compile(rule);

            var options = GetPreevaluationOptions(rule, objectFactory);

            try
            {
                return((DryvResultMessage)rule.CompiledValidationExpression(model, options));
            }
            catch (Exception ex)
            {
                throw new DryvValidationExecutionException(rule, ex);
            }
        }