Lors de l’implémentation d’IDisposable, je m’engage à ce que chaque méthode qui ne devrait pas être appelée une fois que l’object a été supprimé devrait lancer l’ ObjectDisposedException
. Mais quelle est la norme pour l’object name qui devrait être passé au constructeur de l’exception?
Je crois que la pratique recommandée est de lancer ce qui suit:
throw new ObjectDisposedException(GetType().FullName);
Ou en incluant le chèque, ces deux lignes de code en haut de chaque méthode qui en ont besoin (évidemment pas la méthode Dispose
elle-même):
if (this.disposed) throw new ObjectDisposedException(GetType().FullName);
Cela pourrait même être utile pour transformer ceci en une toute petite méthode d’utilisation.
Même le .NET Framework lui-même n’est pas très cohérent ici.
David M. Kean (ancien développeur de l’équipe FxCop chez Microsoft) a ajouté un commentaire à la documentation MSDN pour ObjectDisposedException :
L’utilisation typique de ce type est quelque chose comme:
[C#] private void CheckDisposed() { throw new ObjectDisposedException(GetType().FullName); }
Je ne crois pas qu’il existe une norme pour cela, je retournerais le type de l’object avec le contenu de chaîne d’un champ d’identification unique (une sorte de «clé primaire»).