我使用一个相当简单的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();
}
}
}
}发布于 2012-12-21 16:01:05
如果您正在使用ASP.Net MVC,您可以让您的控制器实现IDisposable,管道将为您处理它。见ASP MVC: When is IController Dispose() called?。
发布于 2012-12-21 15:59:15
您的存储库实现了IDisposable。让您的控制器也实现IDisposable,并在dispose方法中清理您的存储库。
https://stackoverflow.com/questions/13993088
复制相似问题