示例#1
0
        public async Task Around(PointcutContext context)
        {
            Console.WriteLine(context.InvocationMethod.Name + "-->Start");
            await context.Proceed();

            Console.WriteLine(context.InvocationMethod.Name + "-->End");
        }
示例#2
0
        public async Task RunWithTransaction(PointcutContext aspectContext)
        {
            logger.Debug($"start transactionScope on `{aspectContext.InvocationMethod.DeclaringType.FullName + "." + aspectContext.InvocationMethod.Name}`");
            using (var scope = new TransactionScope(TransactionScopeAsyncFlowOption.Enabled))
            {
                await aspectContext.Proceed();

                if (Transaction.Current.TransactionInformation.Status == TransactionStatus.Active)
                {
                    scope.Complete();
                    logger.Debug($"submit transactionScope on `{aspectContext.InvocationMethod.DeclaringType.FullName + "." + aspectContext.InvocationMethod.Name}`");
                }
            }
        }