コード例 #1
0
        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);
        }
コード例 #2
0
 public AspectStorageProvider(IAspectExpressionBuilder aspectExpressionBuilder)
 {
     _aspectExpressionBuilder = aspectExpressionBuilder;
 }