Exemple #1
0
        public async Task InvokeAsync(IInvocationContext context)
        {
            var logBuilder = _logger.Create(context.Method);

            try
            {
                logBuilder.AddArguments(context.Arguments);
                logBuilder.AddPreStates(context.PreStates);

                try
                {
                    await context.InvokeAsync();
                }
                catch (Exception exception)
                {
                    logBuilder.AddPostStates(context.PostStates);
                    logBuilder.SetException(exception);
                    throw;
                }

                logBuilder.AddPostStates(context.PostStates);
                logBuilder.SetReturnValue(context.ReturnValue);
            }
            finally
            {
                logBuilder.Write();
            }
        }