Ejemplo n.º 1
0
        internal static Container RegisterAsValidatorCollection(
            this Container container,
            FluentValidationSimpleInjectorConfiguration serviceConfig,
            IEnumerable <Type> nonSkippedTypes)
        {
            container.Collection.Register(typeof(IValidator <>), nonSkippedTypes, serviceConfig.Lifestyle);

            return(container);
        }
Ejemplo n.º 2
0
        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);
        }
Ejemplo n.º 3
0
#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));
        }
Ejemplo n.º 4
0
#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));
        }