internal AspectExpressionTreeBuilder(IAspectDefinitionCollection aspectDefinitions) { var aspectVisitor = new AspectVisitor(); IAspectDefinition lastAspectDefinition = null; IAspectExpressionBuilder invocationAspectBuilder = null; IArgumentsWeavingSettings argumentsWeavingSettings = null; List <IAspectExpressionBuilder> aspectExpressionBuilders = null; var aspectsByPriority = aspectDefinitions.OrderBy(aspect => aspect.Aspect.AspectPriority) .ThenBy(aspect => { var value = aspect.Aspect is OnMethodBoundaryAspectAttribute; return(Convert.ToInt32(!value)); }); lastAspectDefinition = aspectDefinitions.First(); argumentsWeavingSettings = lastAspectDefinition.ToArgumentsWeavingSettings(); aspectExpressionBuilders = aspectsByPriority.ToList(definition => definition.BuildAdvices().Accept(aspectVisitor)); invocationAspectBuilder = aspectVisitor.VisitLast(lastAspectDefinition, argumentsWeavingSettings); aspectExpressionBuilders.Add(invocationAspectBuilder); aspectsStack = new Stack <IAspectExpressionBuilder>(aspectExpressionBuilders); }
public AspectStorageProvider(IAspectExpressionBuilder aspectExpressionBuilder) { _aspectExpressionBuilder = aspectExpressionBuilder; }