我需要使用一些重试策略逻辑包装一些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();
});
答案 0 :(得分:3)
不需要匿名包装器。只需直接传递lambda表达式函数调用。
答案 1 :(得分:2)
AFAIK,如果方法的参数类型为Func
,则调用它将自动作为函数传递而不执行它。您不需要在匿名函数包装器中进一步包装它。