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); }
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"); }