// 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);
}
}
}
}