| File: ViewComponents\DefaultViewComponentInvokerFactory.cs | Web Access |
| Project: src\aspnetcore\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 System.Diagnostics; using Microsoft.Extensions.Logging; namespace Microsoft.AspNetCore.Mvc.ViewComponents; internal sealed class DefaultViewComponentInvokerFactory : IViewComponentInvokerFactory { private readonly IViewComponentFactory _viewComponentFactory; private readonly ViewComponentInvokerCache _viewComponentInvokerCache; private readonly ILogger _logger; private readonly DiagnosticListener _diagnosticListener; public DefaultViewComponentInvokerFactory( IViewComponentFactory viewComponentFactory, ViewComponentInvokerCache viewComponentInvokerCache, DiagnosticListener diagnosticListener, ILoggerFactory loggerFactory) { ArgumentNullException.ThrowIfNull(viewComponentFactory); ArgumentNullException.ThrowIfNull(viewComponentInvokerCache); ArgumentNullException.ThrowIfNull(diagnosticListener); ArgumentNullException.ThrowIfNull(loggerFactory); _viewComponentFactory = viewComponentFactory; _diagnosticListener = diagnosticListener; _viewComponentInvokerCache = viewComponentInvokerCache; _logger = loggerFactory.CreateLogger<DefaultViewComponentInvoker>(); } /// <inheritdoc /> // We don't currently make use of the descriptor or the arguments here (they are available on the context). // We might do this some day to cache which method we select, so resist the urge to 'clean' this without // considering that possibility. public IViewComponentInvoker CreateInstance(ViewComponentContext context) { ArgumentNullException.ThrowIfNull(context); return new DefaultViewComponentInvoker( _viewComponentFactory, _viewComponentInvokerCache, _diagnosticListener, _logger); } }