我編寫了一個繼承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方法的內容已經存在 –