예제 #1
0
        public static IValidationOptions GetVerifiedValidationOptions(IValidationOptions options)
        {
            if (options == null)
            {
                throw new ArgumentNullException(nameof(options));
            }

            if (options.CollectionForceKey == null)
            {
                throw new InvalidOperationException($"Null {nameof(IExecutionOptions.CollectionForceKey)}");
            }

            if (options.RequiredError == null)
            {
                throw new InvalidOperationException($"Null {nameof(IExecutionOptions.RequiredError)}");
            }

            if (options.MaxDepth < 0)
            {
                throw new InvalidOperationException($"{nameof(IExecutionOptions.MaxDepth)} cannot be negative");
            }

            return(new ValidationOptions
            {
                TranslationName = options.TranslationName,
                NullRootStrategy = options.NullRootStrategy,
                ValidationStrategy = options.ValidationStrategy,
                CollectionForceKey = options.CollectionForceKey,
                MaxDepth = options.MaxDepth,
                RequiredError = options.RequiredError,
                DefaultError = options.DefaultError
            });
        }
예제 #2
0
        public static IValidationOptions UnwrapValidationOptions(IValidationOptions wrapped, Action <ValidationOptions> processUnwrapped)
        {
            var unwrapped = (ValidationOptions)wrapped;

            processUnwrapped(unwrapped);

            return(unwrapped);
        }
예제 #3
0
        /// <summary>
        ///     Sets the key (a member name) for the collection's members errors if validating using
        ///     <see cref="ValidationStrategy.Force" /> strategy.
        /// </summary>
        /// <param name="options"></param>
        /// <param name="collectionForceKey">
        ///     Key (a member name) for the collection's members errors if validating using
        ///     <see cref="ValidationStrategy.Force" /> strategy.
        /// </param>
        /// <exception cref="ArgumentNullException">Thrown if <paramref name="collectionForceKey" /> is null.</exception>
        public static IValidationOptions SetCollectionForceKey(this IValidationOptions options, string collectionForceKey)
        {
            if (collectionForceKey == null)
            {
                throw new ArgumentNullException(nameof(collectionForceKey));
            }

            return(OptionsUnwrapper.UnwrapValidationOptions(options, validationOptions => { validationOptions.CollectionForceKey = collectionForceKey; }));
        }
예제 #4
0
        /// <summary>
        ///     Sets the maximum allowed level of depth within the validated model. The default value is 10.
        /// </summary>
        /// <param name="options"></param>
        /// <param name="maxDepth">Max depth.</param>
        /// <exception cref="ArgumentOutOfRangeException">Thrown when <paramref name="maxDepth" /> is less than zero.</exception>
        public static IValidationOptions SetMaxDepth(this IValidationOptions options, int maxDepth)
        {
            if (maxDepth < 0)
            {
                throw new ArgumentOutOfRangeException(nameof(maxDepth), maxDepth, $"{nameof(maxDepth)} cannot be less than 0");
            }

            return(OptionsUnwrapper.UnwrapValidationOptions(options, validationOptions => { validationOptions.MaxDepth = maxDepth; }));
        }
예제 #5
0
        /// <summary>
        ///     Sets the default error added to the member if it's invalid but no error message is assigned.
        /// </summary>
        /// <param name="options"></param>
        /// <param name="errorMessage">Error message</param>
        /// <exception cref="ArgumentNullException">Thrown if <see cref="errorMessage" /> is null.</exception>
        public static IValidationOptions SetDefaultError(this IValidationOptions options, string errorMessage)
        {
            var requiredError = new Error(errorMessage);

            return(OptionsUnwrapper.UnwrapValidationOptions(options, validationOptions => { validationOptions.DefaultError = requiredError; }));
        }
예제 #6
0
 /// <summary>
 ///     Sets the default strategy of the validation process.
 /// </summary>
 /// <param name="options"></param>
 /// <param name="validationStrategy">Strategy of the validation process.</param>
 public static IValidationOptions SetValidationStrategy(this IValidationOptions options, ValidationStrategy validationStrategy)
 {
     return(OptionsUnwrapper.UnwrapValidationOptions(options, validationOptions => { validationOptions.ValidationStrategy = validationStrategy; }));
 }
예제 #7
0
 /// <summary>
 ///     Disables the default translation. <see cref="ITranslationProxy.DefaultTranslator" /> in the
 ///     <see cref="IValidationResult{T}" /> will be using original phrases.
 /// </summary>
 /// <param name="options"></param>
 public static IValidationOptions SetTranslationDisabled(this IValidationOptions options)
 {
     return(OptionsUnwrapper.UnwrapValidationOptions(options, validationOptions => { validationOptions.TranslationName = null; }));
 }
예제 #8
0
 /// <summary>
 ///     Default translation name. Used to create <see cref="ITranslationProxy.DefaultTranslator" /> in the
 ///     <see cref="IValidationResult{T}" />.
 /// </summary>
 /// <param name="options"></param>
 /// <param name="translationName">Translation name.</param>
 public static IValidationOptions SetTranslationName(this IValidationOptions options, string translationName)
 {
     return(OptionsUnwrapper.UnwrapValidationOptions(options, validationOptions => { validationOptions.TranslationName = translationName; }));
 }
예제 #9
0
 /// <summary>
 ///     Sets the behavior for the null reference passed to be validated.
 /// </summary>
 /// <param name="options"></param>
 /// <param name="nullRootStrategy">Behavior for the null reference passed to be validated.</param>
 public static IValidationOptions SetNullRootStrategy(this IValidationOptions options, NullRootStrategy nullRootStrategy)
 {
     return(OptionsUnwrapper.UnwrapValidationOptions(options, validationOptions => { validationOptions.NullRootStrategy = nullRootStrategy; }));
 }