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

匿名ラッパーは必要ありません。ラムダ式の関数呼び出しを直接渡すだけです。

于 2011-03-03T05:04:38.160 に答える
2

AFAIK、メソッドの引数タイプがである場合、Funcそれを呼び出すと、実行せずに関数として自動的に渡されます。匿名関数ラッパーでさらにラップする必要はありません。

于 2011-03-03T04:55:27.237 に答える