Lors de l'implémentation d'IDisposable, j'ai compris que toutes les méthodes qui ne doivent pas être appelées après que l'objet a été éliminé doivent lancer la méthode de récupération de l'objet. ObjectDisposedException
. Mais quelle est la norme pour l'objet nom qui doit être passé au constructeur de l'exception ?
Réponses
Trop de publicités?Je crois que la pratique recommandée est de lancer ce qui suit :
throw new ObjectDisposedException(GetType().FullName);
Ou bien, en incluant le contrôle, ces deux lignes de code en haut de chaque méthode qui en a besoin (évidemment pas les Dispose
de la méthode elle-même) :
if (this.disposed)
throw new ObjectDisposedException(GetType().FullName);
Il pourrait même être utile de refactoriser ceci en une petite méthode pour la facilité d'utilisation.
La structure .NET elle-même n'est pas très cohérente dans ce domaine.
David M. Kean (ancien développeur de l'équipe FxCop chez Microsoft) a ajouté un commentaire à l'adresse suivante Documentation MSDN pour l'exception ObjectDisposedException :
L'utilisation typique de ce type est la suivante :
[C#] private void CheckDisposed() { throw new ObjectDisposedException(GetType().FullName); }