J'ai écrit une classe qui hérite de DbConnection et je ne comprends pas complètement pourquoi elle fonctionne comme elle le fait.Pourquoi ai-je besoin d'implémenter IDisposable() sur une classe enfant
Au début, j'eu ceci:
public class DatabaseConnection : DbConnection
{
...
public override void Close()
{
// Some stuff
}
// No Dispose method
}
using(var db = new DatabaseConnection())
{
// Some processing
}
La méthode Close() n'a pas été appelé, et nous avons pu voir les connexions rester sur le serveur MySQL.
Maintenant, j'ai cela, et il fonctionne (il ferme vraiment les connexions, et le serveur est 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
}
Pourquoi héritant de la classe DbConnection et en remplaçant la Fermer La méthode() ne fonctionne pas?
Éliminer ou fermer? Parce que le contenu de la méthode Dispose est déjà là –