je la classe suivante dérivée de flux:flux dérivé contenant Mise au rebut des ruisseaux
public class EncryptedStream : Stream
{
private readonly SymmetricAlgorithm _engine;
private readonly CryptoStream _cryptoStream;
private readonly Stream _inputStream;
//Standard overrides of stream
}
Je cherche un moyen de l'éliminer le flux de base et tous les cours d'eau et des ressources au sein de cette classe. J'ai lu sur le modèle Éliminez un peu, et comme flux implémente déjà IDisposable, ma pensée serait de disposer dans cette classe que je ferais ce qui suit:
protected override void Dispose(bool disposing)
{
if (disposing)
{
_engine.Dispose();
_cryptoStream.Dispose();
_inputStream.Dispose();
}
}
Cela devrait s'appelé lors de l'élimination du flux de base depuis le flux de base IDisposable appelle Close() qui appelle Dispose (true).
Cela semble fonctionner, y a-t-il des inconvénients à cette approche? Et aussi, ai-je besoin d'appeler base.Dispose (disposition) après l'instruction If? Je ne pense pas que ce soit déjà fait en appelant Dispose sur le flux de base en premier lieu correct?
Y a-t-il d'autres façons moins compliquées de procéder à cette élimination, car cela m'a pris du temps à comprendre.