Ejemplo n.º 1
0
        internal BindingAspectDecoratorWeaver(IAspectDefinition aspectDefinition, IAspectWeavingSettings aspectWeavingSettings, IArgumentsWeavingSettings argumentsWeavingSettings)
            : base(aspectWeavingSettings.WeavingSettings)
        {
            var bindingSettings = aspectDefinition.ToBindingSettings();
            var methodInfoImpl  = aspectWeavingSettings.WeavingSettings.MethodInfoImpl;

            lazyWeavedType = new Core.Lib.Lazy <FieldInfo>(WeaveType);
            bindingSettings.LocalBuilderRepository = aspectWeavingSettings.LocalBuilderRepository;
            methodDecoratorScopeWeaver             = new MethodDecoratorScopeWeaver(aspectWeavingSettings);
            weaver = new MethodDecoratorBindingWeaver(bindingSettings, aspectWeavingSettings, this);
        }
        protected virtual FieldInfo WeaveType()
        {
            IAspectWeaver        aspectWeaver  = null;
            IMethodBindingWeaver bindingWeaver = null;
            var aspectType    = aspectDefinition.Aspect.AspectType;
            var aspectSetings = GetAspectsWeavingSettings();

            aspectWeaver = aspectExpression.Reduce(aspectSetings);
            bindingSettings.LocalBuilderRepository = aspectSetings.LocalBuilderRepository;
            bindingWeaver = new OnMethodInterceptionBindingWeaver(aspectType, bindingSettings, aspectWeavingSettings, aspectWeaver);

            return(bindingWeaver.Weave());
        }