46 votes

Qu'est-ce qui doit être passé comme objectName lors de l'envoi d'une ObjectDisposedException ?

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 ?

48voto

Noldorin Points 67794

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.

12voto

Albic Points 1677

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);
}

1voto

Aviad P. Points 9351

Je ne pense pas qu'il existe une norme pour cela. Je renverrais le type de l'objet ainsi que la chaîne de caractères d'un champ d'identification unique (une sorte de "clé primaire").

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X