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))); }
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)); } }