Пример #1
0
 public override ValueTask <IActionResult> Execute(
     IActionResultTypeMapper mapper,
     ObjectMethodExecutor executor,
     object controller,
     object[] arguments)
 {
     executor.Execute(controller, arguments);
     return(new ValueTask <IActionResult>(new EmptyResult()));
 }
Пример #2
0
            public override ValueTask <IActionResult> Execute(
                IActionResultTypeMapper mapper,
                ObjectMethodExecutor executor,
                object controller,
                object[] arguments)
            {
                var actionResult = (IActionResult)executor.Execute(controller, arguments);

                EnsureActionResultNotNull(executor, actionResult);

                return(new ValueTask <IActionResult>(actionResult));
            }
Пример #3
0
            public override ValueTask <IActionResult> Execute(
                IActionResultTypeMapper mapper,
                ObjectMethodExecutor executor,
                object controller,
                object[] arguments)
            {
                // Sync method returning arbitrary object
                var returnValue  = executor.Execute(controller, arguments);
                var actionResult = ConvertToActionResult(mapper, returnValue, executor.MethodReturnType);

                return(new ValueTask <IActionResult>(actionResult));
            }
Пример #4
0
            public override async ValueTask <IActionResult> Execute(
                IActionResultTypeMapper mapper,
                ObjectMethodExecutor executor,
                object controller,
                object[] arguments)
            {
                // Async method returning awaitable-of-IActionResult (e.g., Task<ViewResult>)
                // We have to use ExecuteAsync because we don't know the awaitable's type at compile time.
                var actionResult = (IActionResult)await executor.ExecuteAsync(controller, arguments);

                EnsureActionResultNotNull(executor, actionResult);
                return(actionResult);
            }
Пример #5
0
        public static ActionMethodExecutor GetExecutor(ObjectMethodExecutor executor)
        {
            for (var i = 0; i < Executors.Length; i++)
            {
                if (Executors[i].CanExecute(executor))
                {
                    return(Executors[i]);
                }
            }

            Debug.Fail("Should not get here");
            throw new Exception();
        }
Пример #6
0
            public override async ValueTask <IActionResult> Execute(
                IActionResultTypeMapper mapper,
                ObjectMethodExecutor executor,
                object controller,
                object[] arguments)
            {
                // Async method returning awaitable-of-nonvoid
                var returnValue = await executor.ExecuteAsync(controller, arguments);

                var actionResult = ConvertToActionResult(mapper, returnValue, executor.AsyncResultType);

                return(actionResult);
            }
Пример #7
0
            public override async ValueTask <IActionResult> Execute(
                IActionResultTypeMapper mapper,
                ObjectMethodExecutor executor,
                object controller,
                object[] arguments)
            {
                // Async method returning Task<IActionResult>
                // Avoid extra allocations by calling Execute rather than ExecuteAsync and casting to Task<IActionResult>.
                var returnValue  = executor.Execute(controller, arguments);
                var actionResult = await(Task <IActionResult>) returnValue;

                EnsureActionResultNotNull(executor, actionResult);

                return(actionResult);
            }
 internal MyControllerActionInvokerCacheEntry(
     FilterItem[] cachedFilters,
     Func <ControllerContext, object> controllerFactory,
     Action <ControllerContext, object> controllerReleaser,
     ControllerBinderDelegate controllerBinderDelegate,
     ObjectMethodExecutor objectMethodExecutor,
     ActionMethodExecutor actionMethodExecutor)
 {
     ControllerFactory        = controllerFactory;
     ControllerReleaser       = controllerReleaser;
     ControllerBinderDelegate = controllerBinderDelegate;
     CachedFilters            = cachedFilters;
     ObjectMethodExecutor     = objectMethodExecutor;
     ActionMethodExecutor     = actionMethodExecutor;
 }
Пример #9
0
 protected override bool CanExecute(ObjectMethodExecutor executor) => true;
Пример #10
0
 protected override bool CanExecute(ObjectMethodExecutor executor) => executor.MethodReturnType == typeof(Task);
Пример #11
0
 protected override bool CanExecute(ObjectMethodExecutor executor)
 => !executor.IsMethodAsync && typeof(IActionResult).IsAssignableFrom(executor.MethodReturnType);
Пример #12
0
 protected override bool CanExecute(ObjectMethodExecutor executor)
 {
     // Async method returning void
     return(executor.IsMethodAsync && executor.AsyncResultType == typeof(void));
 }
Пример #13
0
 protected override bool CanExecute(ObjectMethodExecutor executor)
 => !executor.IsMethodAsync && executor.MethodReturnType == typeof(void);
Пример #14
0
 protected override bool CanExecute(ObjectMethodExecutor executor)
 => typeof(Task <IActionResult>).IsAssignableFrom(executor.MethodReturnType);
Пример #15
0
 protected abstract bool CanExecute(ObjectMethodExecutor executor);
Пример #16
0
 public abstract ValueTask <IActionResult> Execute(
     IActionResultTypeMapper mapper,
     ObjectMethodExecutor executor,
     object controller,
     object[] arguments);
Пример #17
0
 // Catch-all for sync methods
 protected override bool CanExecute(ObjectMethodExecutor executor) => !executor.IsMethodAsync;
Пример #18
0
 protected override bool CanExecute(ObjectMethodExecutor executor)
 {
     // Async method returning awaitable-of - IActionResult(e.g., Task<ViewResult>)
     return(executor.IsMethodAsync && typeof(IActionResult).IsAssignableFrom(executor.AsyncResultType));
 }