private void InterceptAsync(IInvocation invocation, IEnumerable <AbpAuthorizeAttribute> authorizeAttributes)
        {
            var authorizationAttributeHelper = _iocResolver.ResolveAsDisposable <IAuthorizeAttributeHelper>();

            if (invocation.Method.ReturnType == typeof(Task))
            {
                invocation.ReturnValue = InternalAsyncHelper.InvokeWithPreAndFinalActionAsync(
                    invocation,
                    async() => await authorizationAttributeHelper.Object.AuthorizeAsync(authorizeAttributes),
                    () => _iocResolver.Release(authorizationAttributeHelper)
                    );
            }
            else
            {
                invocation.ReturnValue = InternalAsyncHelper.CallInvokeWithPreAndFinalActionAsync(
                    invocation.Method.ReturnType.GenericTypeArguments[0],
                    invocation,
                    async() => await authorizationAttributeHelper.Object.AuthorizeAsync(authorizeAttributes),
                    () => _iocResolver.Release(authorizationAttributeHelper)
                    );
            }
        }