我编写了一个继承DbConnection的类,但我并不完全理解它为什么会像它那样工作。为什么我需要我需要在子类中实现IDisposable()
起初,我有这样的:
public class DatabaseConnection : DbConnection
{
...
public override void Close()
{
// Some stuff
}
// No Dispose method
}
using(var db = new DatabaseConnection())
{
// Some processing
}
的Close()方法不叫了,我们可以看到连接停留在MySQL服务器上。
现在我都这样了,它的工作原理(它真的关闭了连接,服务器就OK):
public class DatabaseConnection : DbConnection, IDisposable
{
...
public override void Close()
{
// Some stuff
}
public new void Dispose()
{
Close();
base.Dispose();
GC.SuppressFinalize(this);
}
}
using(var db = new DatabaseConnection())
{
// Some processing
}
为什么继承的DbConnection类并覆盖关闭()方法不起作用?
Dispose or Close?因为Dispose方法的内容已经存在 –