Que doit-on transmettre en tant que nom d’object lors de la levée d’une exception ObjectDisposedException?

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»).