【发布时间】:2016-05-31 09:33:51
【问题描述】:
我编写了一个继承 DbConnection 的类,但我不完全理解它为什么会这样工作。
起初我有这个:
public class DatabaseConnection : DbConnection
{
...
public override void Close()
{
// Some stuff
}
// No Dispose method
}
using(var db = new DatabaseConnection())
{
// Some processing
}
没有调用 Close() 方法,我们可以看到连接停留在 MySQL 服务器上。
现在我有了这个,它可以工作了(它确实关闭了连接,服务器也正常):
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 类并覆盖 Close() 方法不起作用?
【问题讨论】:
-
丢弃还是关闭?因为Dispose方法的内容已经有了
标签: c# idisposable dbconnection