// 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; using System.Collections.Generic; using System.Linq; using Microsoft.AspNetCore.Mvc.ModelBinding.Metadata; namespace Microsoft.AspNetCore.Mvc.Internal { /// /// A default implementation of . /// public class DefaultCompositeMetadataDetailsProvider : ICompositeMetadataDetailsProvider { private readonly IEnumerable _providers; /// /// Creates a new . /// /// The set of instances. public DefaultCompositeMetadataDetailsProvider(IEnumerable providers) { _providers = providers; } /// public virtual void CreateBindingMetadata(BindingMetadataProviderContext context) { if (context == null) { throw new ArgumentNullException(nameof(context)); } foreach (var provider in _providers.OfType()) { provider.CreateBindingMetadata(context); } } /// public virtual void CreateDisplayMetadata(DisplayMetadataProviderContext context) { if (context == null) { throw new ArgumentNullException(nameof(context)); } foreach (var provider in _providers.OfType()) { provider.CreateDisplayMetadata(context); } } /// public virtual void CreateValidationMetadata(ValidationMetadataProviderContext context) { if (context == null) { throw new ArgumentNullException(nameof(context)); } foreach (var provider in _providers.OfType()) { provider.CreateValidationMetadata(context); } } } }