SimpleInjector und FluentValidationFactory

Ich versuche, die Validierung meiner Ansichtsmodelle zu automatisieren. Ich weiß, dass ich nur ein Attribut hinzufügen kann, um meine Validierung anzugeben, aber es gibt eine Option zum Einrichten einer Factory, um all das zu automatisieren. Ich habe mir Folgendes angesehen:diese Antwort und kam mit einfachen Injektor 3.1 mit diesem:

public class CustomValidatorFactory:ValidatorFactoryBase
    {
        private readonly Container siContainer;
        public CustomValidatorFactory(Container siContainer)
        {
            var assemblies = AppDomain.CurrentDomain.GetAssemblies().ToList();
            this.siContainer = siContainer;
            this.siContainer.Register(typeof(IValidator<>), assemblies);
        }
        public override IValidator CreateInstance(Type validatorType)
        {
            //var instances = siContainer.GetAllInstances(validatorType);
            var implementation = ((IServiceProvider)siContainer).GetService(validatorType);
            var validatorInstance = implementation != null ? (implementation as IValidator) : null;
            return validatorInstance;
        }
    }

Dann kann das Ansichtsmodell so etwas wie @ se

public class Person {
    public int Id { get; set; }
    public string Name { get; set; }
    public string Email { get; set; }
    public int Age { get; set; }
}

public class PersonValidator : AbstractValidator<Person> {
    public PersonValidator() {
        RuleFor(x => x.Id).NotNull();
        RuleFor(x => x.Name).Length(0, 10);
        RuleFor(x => x.Email).EmailAddress();
        RuleFor(x => x.Age).InclusiveBetween(18, 60);
    }
}

Allerdings ist die Implementierungsvariable immer null. Ich habe auch RegisterCollection ausprobiert, habe aber immer noch das gleiche Problem. Es scheint, als ob der einfache Injektor nicht weiß, wie IValidator aufgelöst wird, wenn der Validator von AbstractValidator erbt. (Dies ist die Klasse, die IValidator implementiert.)

Antworten auf die Frage(4)

Ihre Antwort auf die Frage