internal AbstractMethodAspectWeaver(IAspectDefinition aspectDefinition, IAspectWeavingSettings aspectWevingSettings) { advices = aspectDefinition.Advices; this.aspectDefinition = aspectDefinition; this.aspectWeavingSettings = aspectWevingSettings; weavingSettings = aspectWevingSettings.WeavingSettings; aspectRepository = aspectWevingSettings.AspectRepository; argumentsWeavingSetings = aspectDefinition.ToArgumentsWeavingSettings(); aspectDefinition.Advices.ForEach(advice => advice.Accept(adviceDiscoveryVistor)); }
internal AbstractAspectWeaver(IAspectDefinition aspectDefinition, IAspectWeavingSettings aspectWeavingSettings) { advices = aspectDefinition.Advices; this.aspectDefinition = aspectDefinition; this.aspectWeavingSettings = aspectWeavingSettings; bindingSettings = aspectDefinition.ToBindingSettings(); weavingSettings = aspectWeavingSettings.WeavingSettings; aspectRepository = aspectWeavingSettings.AspectRepository; argumentsWeavingSettings = aspectDefinition.ToArgumentsWeavingSettings(); aspectDefinition.Advices.ForEach(advice => advice.Accept(adviceDiscoveryVistor)); }
internal AbstractMethodInterceptionAspectWeaver(IAspectDefinition aspectDefinition, IAspectWeavingSettings aspectWeavingSettings, FieldInfo weavedType) : base(aspectDefinition, aspectWeavingSettings) { IAdviceExpression selectedExpression = null; var argumentsWeavingSettings = aspectDefinition.ToArgumentsWeavingSettings(); var aspectSettings = new AdviceWeavingSettings(aspectWeavingSettings, argumentsWeavingSettings); bindingDependency = weavedType; selectedExpression = ResolveOnMethodInvokeAdvice(); methodScopeWeavers = new List <IMethodScopeWeaver>(); methodScopeWeavers.Add(selectedExpression.Reduce(aspectSettings)); localBuilderRepository = aspectWeavingSettings.LocalBuilderRepository; }
internal AbstractInterceptionAspectWeaver(IAspectDefinition aspectDefinition, IAspectWeavingSettings aspectWeavingSettings, FieldInfo weavedType) : base(aspectDefinition, aspectWeavingSettings) { IAdviceExpression selectedExpression = null; AdviceWeavingSettings adviceWeavingSettings = null; bindingDependency = weavedType; argumentsWeavingSettings = aspectDefinition.ToArgumentsWeavingSettings(); adviceWeavingSettings = new AdviceWeavingSettings(aspectWeavingSettings, argumentsWeavingSettings); selectedExpression = ResolveInterceptionAdviceExpression(); methodScopeWeavers = new List<IMethodScopeWeaver> { selectedExpression.Reduce(adviceWeavingSettings) }; localBuilderRepository = aspectWeavingSettings.LocalBuilderRepository; }
internal NestedMethodInterceptionAspectWeaver(Type previousAspectArgType, IAspectDefinition aspectDefinition, IAspectWeavingSettings aspectWeavingSettings, FieldInfo weavedType) : base(aspectDefinition, aspectWeavingSettings, weavedType) { var argumentWeavingSettings = aspectDefinition.ToArgumentsWeavingSettings(); argumentWeavingSettings.BindingsDependency = weavedType; argumentsWeaver = new NestedMethodIntercpetionArgumentsWeaver(previousAspectArgType, aspectWeavingSettings, argumentWeavingSettings); if (argumentsWeavingSetings.IsFunction) { methodScopeWeavers.Add(new NestedFunctionAspectArgsMappingWeaver(previousAspectArgType, aspectWeavingSettings, argumentsWeavingSetings)); } else { methodScopeWeavers.Add(new NestedActionAspectArgsMappingWeaver(previousAspectArgType, aspectWeavingSettings, argumentsWeavingSetings)); } weaver = new MethodScopeWeaversQueue(methodScopeWeavers); }
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); }