5
我需要用一些重試策略邏輯來包裝一些Linq查詢。將Linq和.ToList(),.Single()等等作爲func參數傳遞給另一個方法是否安全?
是否安全,通過這樣的:
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();
});
不確定數組如何幫助這裏? – mellamokb 2011-03-03 04:44:52
這不是一個數組,最後一個片段會將linq包裝在一個匿名函數中(我相信)。 – Vyrotek 2011-03-03 04:45:40
啊,我明白了。你需要把'return'放在前面。無論哪種方式,它們在我的測試中似乎都具有相同的類型('System.Func \'1 [User]')。 – mellamokb 2011-03-03 04:50:57