public override IAspectWeaver Reduce(IAspectWeavingSettings aspectWeavingSettings)
        {
            var topAspectInScopeArgType = topAspectInScopeDefinition.ToAspectArgumentImpl();
            var bindingWeaver           = new IsolatedMethodInterceptionBindingWeaver(aspectExpression, aspectDefinition, aspectWeavingSettings);

            return(new BindingMethodInterceptionAspectWeaver(topAspectInScopeArgType, aspectDefinition, aspectWeavingSettings, bindingWeaver.WeavedType));
        }
Exemplo n.º 2
0
        private static BindingSettings ToMethodBindingSettings(this IMethodAspectDefinition aspectDefinition)
        {
            var aspectArgumentType     = aspectDefinition.GetArgumentType();
            var aspectArgumentImplType = aspectDefinition.ToAspectArgumentImpl();
            var genericArguments       = aspectArgumentImplType.GetGenericArguments();

            if (aspectArgumentType.IsFunctionAspectArgs())
            {
                return(new BindingSettings {
                    HasReturnType = true,
                    MemberType = MemberTypes.Method,
                    MemberInfo = aspectDefinition.Member,
                    ArgumentType = aspectArgumentImplType,
                    BindingType = aspectArgumentType.MakeGenericFunctionBinding(genericArguments)
                });
            }

            return(new BindingSettings {
                MemberType = MemberTypes.Method,
                MemberInfo = aspectDefinition.Member,
                ArgumentType = aspectArgumentImplType,
                BindingType = aspectArgumentType.MakeGenericActionBinding(genericArguments)
            });
        }
Exemplo n.º 3
0
        public IAspectWeaver Reduce(IAspectWeavingSettings aspectWeavingSettings)
        {
            var topAspectInScopeArgType = topAspectInScopeDefinition.ToAspectArgumentImpl();

            return(new MethodInvokerAspectWeaver(topAspectInScopeArgType, aspectDefinition, aspectWeavingSettings, argumentsWeavingSettings));
        }
Exemplo n.º 4
0
 internal static Type ToAspectArgumentImpl(this IMethodAspectDefinition aspectDefinition)
 {
     return(aspectDefinition.ToAspectArgumentImpl(aspectDefinition.Member));
 }