我正在使用一种相当简单的 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();
}
}
}
}