C# 如何让类dispose和继承的类dispose同时运行?
我的控制器正在使用这个基类:C# 如何让类dispose和继承的类dispose同时运行?,c#,C#,我的控制器正在使用这个基类: public class BaseController : ApiController { protected JavaCertContext db = new JavaCertContext(); protected override void Dispose(bool disposing) { if (disposing) { db.Dispose(); }
public class BaseController : ApiController
{
protected JavaCertContext db = new JavaCertContext();
protected override void Dispose(bool disposing)
{
if (disposing)
{
db.Dispose();
}
base.Dispose(disposing);
}
}
在我的几个控制器中,我还需要处理一些其他对象,如:
protected override void Dispose(bool disposing)
{
if (disposing && _userManager != null)
{
_userManager.Dispose();
_userManager = null;
}
base.Dispose(disposing);
}
在这些控制器中,我如何确保控制器Dispose和它继承的继承Dispose都得到执行?这正是
base.Dispose(disposing)的作用代码>调用正在进行,即调用基类的dispose方法 正确地遵循以下步骤。它将确保先调用子dispose,然后调用父dispose
public class BaseController : ApiController
{
protected JavaCertContext db = new JavaCertContext();
protected override void Dispose(bool disposing)
{
if (disposing)
{
db.Dispose();
}
base.Dispose(disposing);
}
}
public class ChildController : BaseController
{
protected override void Dispose(bool disposing)
{
if (disposing)
{
if (_userManager != null)
{
_userManager.Dispose();
_userManager = null;
}
}
base.Dispose(disposing);
}
}
public class ApiController
{
private volatile bool _isDiposed;
public void Dispose()
{
if (_isDiposed)
{
return;
}
Dispose(true);
_isDiposed = true;
}
protected virtual void Dispose(bool isDisposing)
{
if (isDisposing)
{
//Dispose stuff.
}
}
}
public class JavaCertContext
{
}
您正在调用base.Dispose()
,那么为什么您认为它们不会同时被释放?您能否澄清他的实现与正确的实现之间的区别?