FluentInterceptedMember <T> SetupSetProperty(LambdaExpression expression) { var propertyExpression = expression.GetMemberAssignmentExpression(); var property = propertyExpression.Member as PropertyInfo; var arguments = property.SetMethod.GetParameters().Select(p => new MatchValue()).ToArray(); var dispatcher = new FluentInterceptedMember <T>(property.SetMethod, arguments); _dispatchers.Add(dispatcher); return(dispatcher); }
FluentInterceptedMember <T> SetupGetProperty(LambdaExpression expression) { var propertyExpression = expression.GetMemberAssignmentExpression(); var property = propertyExpression.Member as PropertyInfo; if (property.GetMethod.GetParameters().Length != 0) { throw new Exception("Property with parameters cannot be intercepted."); } var dispatcher = new FluentInterceptedMember <T>(property.GetMethod, new object[0]); _dispatchers.Add(dispatcher); return(dispatcher); }
FluentInterceptedMember <T> SetupMethod(LambdaExpression expression) { var methodCall = expression.GetMethodCallExpression(); var methodInfo = methodCall.Method; var arguments = methodCall.ExtractArguments().Select(p => p.Value).ToArray(); for (int i = 0; i < arguments.Length; i++) { var exprArg = methodCall.Arguments[i]; arguments[i] = GetConfiguredParameterValue(arguments[i], exprArg); } var dispatcher = new FluentInterceptedMember <T>(methodInfo, arguments); _dispatchers.Add(dispatcher); return(dispatcher); }