public async Task <IEnumerable <ValidationFailure> > Validate(object validatorCaller, object validatingObject)
        {
            var fvValidator = _factory.GetType().GetMethod("GetValidator")
                              .MakeGenericMethod(validatingObject.GetType()).Invoke(_factory, null);

            if (fvValidator == null)
            {
                return(Enumerable.Empty <ValidationFailure>());
            }


            if (fvValidator.GetType().IsGenericType)
            {
                if (fvValidator.GetType() == typeof(FluentModelValidator <>).MakeGenericType(fvValidator.GetType().GenericTypeArguments))
                {
                    fvValidator.GetType().GetProperty("ValidatorCaller").SetValue(fvValidator, validatorCaller);
                }

                else if (fvValidator.GetType() == typeof(FluentModelValidator <,>).MakeGenericType(fvValidator.GetType().GenericTypeArguments))
                {
                    fvValidator.GetType().GetProperty("ValidatorCaller").SetValue(fvValidator, validatorCaller.CastToReflected(validatorCaller.GetType()));
                }
            }



            var Validator = await fvValidator.GetType().GetMethod("ValidateAsync").InvokeAsync(fvValidator, validatingObject);

            ValidationResult validationResult = (ValidationResult)Validator;
            var failures = validationResult.Errors
                           .Select(e => new ValidationFailure(e.PropertyName, e.ErrorMessage));

            return(failures);
        }
Exemplo n.º 2
0
        public void Can_Resolve_Validator_Factory()
        {
            // Setup
            IWindsorContainer container = new WindsorContainer();

            container.Kernel.ComponentModelBuilder.AddContributor(new SingletonLifestyleEqualizer());
            container.Install(FromAssembly.Containing <HomeController>());

            // Act
            IValidatorFactory factory = container.Resolve <IValidatorFactory>();

            // verify
            Assert.AreEqual(typeof(WindsorValidatorFactory), factory.GetType(), "Unexpected validator factory found");
        }