我正在使用一个相当简单的DI模式将我的数据存储库注入到我的控制器类中,并且我在每一个控制器类中都得到了CA2000代码分析警告(在丢失范围之前处理对象)。我知道为什么警告正在发生的事情,而且通常可以找出如何解决它,但在这种情况下,我无法弄清楚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();
}
}
}
}
在任何情况下,Dispose'方法中的'(this.db!= null)'都是多余的,因为您在几行之后再次执行空检查。你也可以在你的'Dispose'方法的底部调用'base.Dispose(disposing)'来确保'Controller'的'Dispose'正确清理。 –