File: ModelMetadataProviderExtensions.cs
Web Access
Project: src\src\Mvc\Mvc.ViewFeatures\src\Microsoft.AspNetCore.Mvc.ViewFeatures.csproj (Microsoft.AspNetCore.Mvc.ViewFeatures)
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.
 
using Microsoft.AspNetCore.Mvc.ModelBinding;
 
namespace Microsoft.AspNetCore.Mvc.ViewFeatures;
 
/// <summary>
/// Extensions methods for <see cref="IModelMetadataProvider"/>.
/// </summary>
public static class ModelMetadataProviderExtensions
{
    /// <summary>
    /// Gets a <see cref="ModelExplorer"/> for the provided <paramref name="modelType"/> and
    /// <paramref name="model"/>.
    /// </summary>
    /// <param name="provider">The <see cref="IModelMetadataProvider"/>.</param>
    /// <param name="modelType">The declared <see cref="Type"/> of the model object.</param>
    /// <param name="model">The model object.</param>
    /// <returns>
    /// A <see cref="ModelExplorer"/> for the <paramref name="modelType"/> and <paramref name="model"/>.
    /// </returns>
    public static ModelExplorer GetModelExplorerForType(
        this IModelMetadataProvider provider,
        Type modelType,
        object model)
    {
        ArgumentNullException.ThrowIfNull(provider);
        ArgumentNullException.ThrowIfNull(modelType);
 
        var modelMetadata = provider.GetMetadataForType(modelType);
        return new ModelExplorer(provider, modelMetadata, model);
    }
}