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代表的第一次尝试。