コード例 #1
0
        public virtual bool VisitAll(AllPointcut pointcut, JoinPoint joinPoint)
        {
            ArgumentUtility.CheckNotNull("pointcut", pointcut);
            ArgumentUtility.CheckNotNull("joinPoint", joinPoint);

            return(pointcut.Pointcuts.All(x => x.Accept(this, joinPoint)));
        }
コード例 #2
0
        public IEnumerable <Advice> GetAdvices(Aspect aspect)
        {
            ArgumentUtility.CheckNotNull("aspect", aspect);

            foreach (var method in aspect.Type.GetMethods())
            {
                var adviceAttribute = method.GetCustomAttributes <AdviceAttribute> (true).SingleOrDefault();
                if (adviceAttribute == null)
                {
                    continue;
                }

                var execution = adviceAttribute.Execution;

                var attributePointcut = _pointcutBuilder.Build(method);
                var mappings          = _contextMappingBuilder.GetMappingsAndPointcut(method);
                var pointcut          = new AllPointcut(new[] { attributePointcut, mappings.Item2 });

                var orderings    = new List <IOrdering>();
                var crosscutting = new Crosscutting(pointcut, orderings, method.Name);
                orderings.AddRange(_orderingBuilder.BuildOrderings(crosscutting, method));

                yield return(new Advice(aspect, method, execution, crosscutting));
            }
        }