オプションで(usingステートメントで)オブジェクトを破棄したいと思います。接続文字列がコンストラクタで渡された場合は、usingメソッドは破棄しなければならず、オブジェクトSQLDataLayerがコンストラクタで渡された場合、破棄したくありません。これは、再利用可能なメソッドごとにSQLDataLayerオブジェクトを渡すことを避けるためですが、これは正しいアプローチですか?C#再利用メソッドと使い捨てを避ける
public class RepoCategory
{
readonly string connString;
SQLDataLayer dl = null;
public RepoCategory(string conn_string)
{
this.connString = conn_string;
}
public RepoCategory(SQLDataLayer dl)
{
this.dl = dl;
}
//I WANT TO MAGICALLY generate using(null) if dl was passed in constructor
//or using(dl = new SQLDataLayer(connString)) if connString was passed.
public Category Get(int category_sid)
{
Category cat = null;
using (SQLDataLayer dlDispose = (dl == null) ? new SQLDataLayer(connString) : null)
{
//can this be simplified/avoided?
if (dlDispose != null)
dl = dlDispose;
cat = dl.GetCat();
}
return cat;
}
//I DON'T WANT TO PASS THE DL MANUALLY EVERYTIME
public Category Get(SQLDataLayer dl, int category_sid)
{
Category cat = null;
cat = dl.GetCat();
return cat;
}
}
ありがとう!使用
あなたのクラスは、消費者が処分方法を選択できるように、おそらくIDisposableを実装する必要があります。 – Crowcoder