// Copyright (c) .NET Foundation. All rights reserved. // Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. using System.Collections.Generic; using Microsoft.AspNetCore.Mvc.Internal; using Microsoft.AspNetCore.Mvc.ModelBinding; using Microsoft.AspNetCore.Mvc.ModelBinding.Validation; using Microsoft.Extensions.Options; namespace Microsoft.AspNetCore.Mvc { /// /// The default implementation of . /// internal class DefaultObjectValidator : ObjectModelValidator { private readonly MvcOptions _mvcOptions; /// /// Initializes a new instance of . /// /// The . /// The list of . /// Accessor to . public DefaultObjectValidator( IModelMetadataProvider modelMetadataProvider, IList validatorProviders, MvcOptions mvcOptions) : base(modelMetadataProvider, validatorProviders) { _mvcOptions = mvcOptions; } public override ValidationVisitor GetValidationVisitor( ActionContext actionContext, IModelValidatorProvider validatorProvider, ValidatorCache validatorCache, IModelMetadataProvider metadataProvider, ValidationStateDictionary validationState) { var visitor = new ValidationVisitor( actionContext, validatorProvider, validatorCache, metadataProvider, validationState); visitor.MaxValidationDepth = _mvcOptions.MaxValidationDepth; return visitor; } } }