0
我有以下代碼被複制並粘貼在多個位置。唯一的區別是在使用中發生了一次變更。所以我做了一個使用SqlConnection轉換爲Func委託
public MyEntity Read(int id)
{
using (SqlConnection sqlConn = new SqlConnection(ConnectionString))
{
sqlConn.Open();
return MyDataLayer.Select(sqlConn, id);
}
}
所以我想出了這個。但是,我的問題是如何將sqlConn var傳遞給調用?
public TResult UsingSqlConnection<TResult>(Func<TResult> myFunction)
{
using (SqlConnection sqlConn = new SqlConnection(ConnectionString))
{
sqlConn.Open();
return myFunction();
}
}
public MyEntity Read(int id)
{
return UsingSqlConnection(() => MyDataLayer.Read(id));
//PROBLEM: Read() requires sqlConn
}
關閉我的頭頂 - 它看起來像,而不是把它當作一個PARAM,我需要在MyDataLayer創建SqlConn一個屬性,使用接口爲它分配在UsingSqlConnection方法。雖然我不會排除重構,但我想知道是否我錯過了一些東西,因爲這是我用Func代表的第一次嘗試。