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
}
- それは私がMyDataLayerにSqlConnのプロパティを作成し、インターフェイスを使用してUsingSqlConnection方法でそれを割り当てる必要があること、代わりにPARAMとしてそれを渡すように見えます。私はリファクタリングを除外しませんが、これはFuncの代理人がこのように最初に試みたものなので、何かが足りないかどうか疑問に思っています。