Advertisement
Guest User

Untitled

a guest
Jun 15th, 2019
96
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.98 KB | None | 0 0
  1. private static Expression<Action<T>> ConstructMethodCallExpressionWithItIsAnyOnAllArguments<T>(string mehodName)
  2. {
  3. var methodInfo = typeof(T).GetMethod(mehodName);
  4.  
  5. var argumentExpression = Expression.Parameter(typeof(T));
  6.  
  7. var methodExpression = Expression.Call(
  8. argumentExpression,
  9. methodInfo,
  10. methodInfo.GetParameters().Select(pi => Expression.Call(
  11. typeof(It), "IsAny", new Type[] { pi.ParameterType }, new Expression[0])));
  12.  
  13. var result = Expression.Lambda<Action<T>>(
  14. methodExpression,
  15. argumentExpression);
  16. return result; //E.g.: Expression<Action<IService>>(s => s.SomeMethod(It.IsAny<int>(), It.IsAny<int>())
  17. }
  18.  
  19. var service = new Mock<IService>();
  20. string methodName = nameof(IService.SomeMethod);
  21. service.Setup(ConstructMethodCallExpressionWithItIsAnyOnAllArguments<IService>(methodName))
  22. .Callback<int, int>((x, y) => { ... });
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement