internal static Container RegisterAsValidatorCollection( this Container container, FluentValidationSimpleInjectorConfiguration serviceConfig, IEnumerable <Type> nonSkippedTypes) { container.Collection.Register(typeof(IValidator <>), nonSkippedTypes, serviceConfig.Lifestyle); return(container); }
internal static Container RegisterAsSingleValidator( this Container container, FluentValidationSimpleInjectorConfiguration serviceConfig, IEnumerable <Type> nonSkippedTypes) { container.Register(typeof(IValidator <>), nonSkippedTypes, serviceConfig.Lifestyle); container.RegisterConditional( typeof(IValidator <>), typeof(NullValidator <>), c => !c.Handled); return(container); }
#pragma warning disable 8632 /// <summary> /// Registers types implementing <see cref="IValidator{T}"/> interface from the specified assemblies. /// </summary> /// <param name="container"><see cref="Container"/>.</param> /// <param name="configuration">The action used to configure the options.</param> /// <returns><see cref="Container"/>.</returns> public static Container AddFluentValidation( this Container container, Action <FluentValidationSimpleInjectorConfiguration>?configuration) { if (container is null) { throw new ArgumentNullException(nameof(container)); } var serviceConfig = new FluentValidationSimpleInjectorConfiguration(); configuration?.Invoke(serviceConfig); return(SetupContainer(container, serviceConfig)); }
#pragma warning restore 8632 internal static Container SetupContainer( this Container container, FluentValidationSimpleInjectorConfiguration serviceConfig) { var uniqueAssemblies = serviceConfig.AssembliesToScan.Distinct().ToArray(); var typesToRegister = container.GetTypesToRegister(typeof(IValidator <>), uniqueAssemblies); var nonSkippedTypes = typesToRegister.Where( type => type.GetCustomAttribute <SkipValidatorRegistrationAttribute>() is null); if (serviceConfig.ValidatorRegistrationKind == ValidatorRegistrationKind.SingleValidator) { return(RegisterAsSingleValidator(container, serviceConfig, nonSkippedTypes)); } return(RegisterAsValidatorCollection(container, serviceConfig, nonSkippedTypes)); }