2017-02-17 2 views

Répondre

0
// must first setup FV 
services 
    .AddMvc() 
    .AddFluentValidation(fv => {}); 

// can then manually register validators 
services.AddTransient<IValidator<Foo>, FooValidator>(); 
services.AddTransient<IValidator<Bar>, BarValidator>(); 
2

Vous allez commencer à chercher à utiliser une ValidatorFactory. Ainsi, au lieu de votre appel à ajouter FluentValidation, votre appel ressemblerait à quelque chose comme ceci:

.AddFluentValidation(fv => fv.ValidatorFactory = new MyValidatorFactory())

Vous devez enregistrer votre validateurs dans votre conteneur du CIO. Dans votre implémentation personnalisée de ValidatorFactory, vous devrez remplacer CreateInstance et lui demander de résoudre les validateurs à l'aide du conteneur IOC.

https://github.com/JeremySkinner/FluentValidation/wiki/i.-IoC

+0

En fait, j'essayé quelque chose de beaucoup plus simple qui fonctionne: 'services.AddTransient , FooValidator>();' Je suis curieux de savoir pourquoi cela fonctionne, et pourquoi votre chemin est correcte ou non ? – grokky

+0

Lorsque vous ajoutez vos validateurs comme ça, appelez-vous toujours '.AddFluentValidation (fv => fv.RegisterValidatorsFromAssemblyContaining ())' – Stout01

+0

Non, je supprime cet enregistrement automatique. Ensuite, enregistrez manuellement chacun d'eux. Et ça marche juste. Mais je crains que 'RegisterValidatorsFromAssemblyContaining' fasse plus de choses qui me manquent, et ça explosera à l'exécution. – grokky