非常に単純なDIパターンを使用して、データリポジトリをコントローラークラスに挿入していますが、すべてのクラスでCA2000コード分析警告(スコープを失う前にオブジェクトを破棄する)が表示されます。警告が発生している理由はわかっており、通常は修正方法を理解できますが、この場合は理解できません
- オブジェクトの作成とメソッドの戻りの間に例外がスローされる可能性があるか、または
try/finally
エラーを取り除くためにブロックを配置できる場所。
いたるところに警告メッセージをあきらめて抑制する前に、潜在的な未処理のオブジェクトをもたらさない、これと同じ効果を達成するためのより良い方法はありますか?
public class AccountController : Controller
{
public AccountController ()
: this(new SqlDataRepository())
{
}
public AccountController ( IDataRepository db )
{
this.db = db ?? new SqlDataRepository();
// Lots of other initialization code here that I'd really like
// to avoid duplicating in the other constructor.
}
protected override void Dispose(bool disposing)
{
if (disposing && (this.db != null))
{
IDisposable temp = this.db as IDisposable;
if (temp != null)
{
temp.Dispose();
}
}
}
}