diff --git a/src/Microsoft.AspNetCore.Mvc.Abstractions/Abstractions/IActionInvoker.cs b/src/Microsoft.AspNetCore.Mvc.Abstractions/Abstractions/IActionInvoker.cs index 42850ee874..ed3650cc23 100644 --- a/src/Microsoft.AspNetCore.Mvc.Abstractions/Abstractions/IActionInvoker.cs +++ b/src/Microsoft.AspNetCore.Mvc.Abstractions/Abstractions/IActionInvoker.cs @@ -5,8 +5,19 @@ namespace Microsoft.AspNetCore.Mvc.Abstractions { + /// + /// Defines an interface for invoking an MVC action. + /// + /// + /// An is created for each request the MVC handles by querying the set of + /// instances. See for more information. + /// public interface IActionInvoker { + /// + /// Invokes an MVC action. + /// + /// A which will complete when action processing has completed. Task InvokeAsync(); } } diff --git a/src/Microsoft.AspNetCore.Mvc.Abstractions/Abstractions/IActionInvokerProvider.cs b/src/Microsoft.AspNetCore.Mvc.Abstractions/Abstractions/IActionInvokerProvider.cs index a546a24735..fa39645aec 100644 --- a/src/Microsoft.AspNetCore.Mvc.Abstractions/Abstractions/IActionInvokerProvider.cs +++ b/src/Microsoft.AspNetCore.Mvc.Abstractions/Abstractions/IActionInvokerProvider.cs @@ -3,6 +3,27 @@ namespace Microsoft.AspNetCore.Mvc.Abstractions { + /// + /// Defines an interface for components that can create an for the + /// current request. + /// + /// + /// + /// instances form a pipeline that results in the creation of an + /// . The instances are ordered by + /// an ascending sort of the . + /// + /// + /// To create an , each provider has its method + /// called in sequence and given the same instance of . Then each + /// provider has its method called in the reverse order. The result is + /// the value of . + /// + /// + /// As providers are called in a predefined sequence, each provider has a chance to observe and decorate the + /// result of the providers that have already run. + /// + /// public interface IActionInvokerProvider { /// @@ -26,8 +47,16 @@ public interface IActionInvokerProvider /// int Order { get; } + /// + /// Called to execute the provider. + /// + /// The . void OnProvidersExecuting(ActionInvokerProviderContext context); + /// + /// Called to execute the provider, after all methods have been called. + /// + /// The . void OnProvidersExecuted(ActionInvokerProviderContext context); } } diff --git a/src/Microsoft.AspNetCore.Mvc.Core/Infrastructure/IActionInvokerFactory.cs b/src/Microsoft.AspNetCore.Mvc.Core/Infrastructure/IActionInvokerFactory.cs new file mode 100644 index 0000000000..9ba0572416 --- /dev/null +++ b/src/Microsoft.AspNetCore.Mvc.Core/Infrastructure/IActionInvokerFactory.cs @@ -0,0 +1,28 @@ +// 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 Microsoft.AspNetCore.Mvc.Abstractions; + +namespace Microsoft.AspNetCore.Mvc.Infrastructure +{ + /// + /// Defines an interface for creating an for the current request. + /// + /// + /// The default implementation creates an by + /// calling into each . See for more + /// details. + /// + public interface IActionInvokerFactory + { + /// + /// Creates an for the current request associated with + /// . + /// + /// + /// The associated with the current request. + /// + /// An or null. + IActionInvoker CreateInvoker(ActionContext actionContext); + } +} diff --git a/src/Microsoft.AspNetCore.Mvc.Core/Internal/IActionInvokerFactory.cs b/src/Microsoft.AspNetCore.Mvc.Core/Internal/IActionInvokerFactory.cs deleted file mode 100644 index 0408afc123..0000000000 --- a/src/Microsoft.AspNetCore.Mvc.Core/Internal/IActionInvokerFactory.cs +++ /dev/null @@ -1,12 +0,0 @@ -// 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 Microsoft.AspNetCore.Mvc.Abstractions; - -namespace Microsoft.AspNetCore.Mvc.Internal -{ - public interface IActionInvokerFactory - { - IActionInvoker CreateInvoker(ActionContext actionContext); - } -}