Bifrost.FluentValidation.Commands.CommandValidatorProvider.BuildDynamicallyDiscoveredInputValidator C# (CSharp) Метод

BuildDynamicallyDiscoveredInputValidator() приватный Метод

private BuildDynamicallyDiscoveredInputValidator ( Type commandType, IDictionary typeAndAssociatedValidatorTypes ) : ICommandInputValidator
commandType System.Type
typeAndAssociatedValidatorTypes IDictionary
Результат ICommandInputValidator
        ICommandInputValidator BuildDynamicallyDiscoveredInputValidator(Type commandType, IDictionary<Type,IEnumerable<Type>> typeAndAssociatedValidatorTypes)
        {
            Type[] typeArgs = { commandType };
            var closedValidatorType = typeof(ComposedCommandInputValidator<>).MakeGenericType(typeArgs);

            var propertyTypeAndValidatorInstances = new Dictionary<Type, IEnumerable<IValidator>>();
            foreach (var key in typeAndAssociatedValidatorTypes.Keys)
            {
                var validatorTypes = typeAndAssociatedValidatorTypes[key];
                if (validatorTypes.Any())
                    propertyTypeAndValidatorInstances.Add(key, validatorTypes.Select(v => _container.Get(v) as IValidator).ToArray());
                    
            }
            return Activator.CreateInstance(closedValidatorType, propertyTypeAndValidatorInstances) as ICommandInputValidator;
        }