public override IAspectWeaver Reduce(IAspectWeavingSettings aspectWeavingSettings) { var topAspectInScopeArgType = topAspectInScopeDefinition.ToAspectArgumentImpl(); var bindingWeaver = new IsolatedMethodInterceptionBindingWeaver(aspectExpression, aspectDefinition, aspectWeavingSettings); return(new NestedMethodInterceptionAspectWeaver(topAspectInScopeArgType, aspectDefinition, aspectWeavingSettings, bindingWeaver.WeavedType)); }
public override IAspectWeaver Reduce(IAspectWeavingSettings aspectWeavingSettings) { var previousAspectArgsType = previousAspectDefinition.ToAspectArgumentImpl(); var nestedWeaver = aspectExpression.Reduce(aspectWeavingSettings); return(new NestedOnMethodBoundaryAspectWeaver(previousAspectArgsType, nestedWeaver, aspectDefinition, aspectWeavingSettings)); }
public override IAspectWeaver Reduce(IAspectWeavingSettings aspectWeavingSettings) { var topAspectInScopeArgType = topAspectInScopeDefinition.ToAspectArgumentImpl(); var clonedSettings = aspectWeavingSettings.CloneWith(settings => { settings.ByRefArgumentsStoreWeaver = NullObjectByRefArgumentsStoreWeaver.Empty; }); var nestedWeaver = aspectExpression.Reduce(clonedSettings); return(new BindingOnMethodBoundaryAspectWeaver(topAspectInScopeArgType, nestedWeaver, aspectDefinition, clonedSettings)); }
internal static BindingSettings ToBindingSettings(this IAspectDefinition aspectDefinition) { var aspectArgumentType = aspectDefinition.GetArgumentType(); var aspectArgumentImplType = aspectDefinition.ToAspectArgumentImpl(); var genericArguments = aspectArgumentImplType.GetGenericArguments(); if (aspectArgumentType.IsFunctionAspectArgs()) { return(new BindingSettings { IsFunction = true, ArgumentType = aspectArgumentImplType, BindingType = aspectArgumentType.MakeGenericFunctionBinding(genericArguments) }); } return(new BindingSettings { IsFunction = false, ArgumentType = aspectArgumentImplType, BindingType = aspectArgumentType.MakeGenericActionBinding(genericArguments) }); }
public IAspectWeaver Reduce(IAspectWeavingSettings aspectWeavingSettings) { var previousAspectArgsType = previousAspectDefinition.ToAspectArgumentImpl(); return(new MethodInvokerAspectWeaver(previousAspectArgsType, aspectDefinition, aspectWeavingSettings, argumentsWeavingSettings)); }