5

我需要用一些重试策略逻辑来包装一些 Linq 查询。

通过这个是否安全:

return WithRetry<User>(() => 
   dataContext.Users.Where(u => u.UserID == userID).SingleOrDefault());

对此:

public TResult WithRetry<TResult>(Func<TResult> methodCall)
{ 
   // My Try/Catch Retry Code
}

还是应该像这样构造第一行:

return WithRetry<User>(() => 
{ 
     return dataContext.Users
                       .Where(u => u.UserID == userID)
                       .SingleOrDefault(); 
});
4

2 回答 2

3

不需要匿名包装器。只需直接传递 lambda 表达式函数调用即可。

于 2011-03-03T05:04:38.160 回答
2

AFAIK,如果方法的参数类型是Func,调用它将自动作为函数传递而不执行它。您无需将其进一步包装在匿名函数包装器中。

于 2011-03-03T04:55:27.237 回答