2009-12-26 13 views

Répondre

39

Je crois que la pratique recommandée est de jeter les éléments suivants:

throw new ObjectDisposedException(GetType().FullName); 

Ou y compris le contrôle, ces deux lignes de code en haut de chaque méthode qui a besoin (de toute évidence pas la méthode Dispose lui-même):

if (this.disposed) 
    throw new ObjectDisposedException(GetType().FullName); 

Peut-être même utile de refactoriser cela en une minuscule méthode d'utilisation.

+0

Aussi, s'il vous plaît voir cette question et ma réponse pour les directives générales: http://stackoverflow.com/questions/668440/handling-objectdisposedexception-correctly-in-an-idisposable-class-hierarchy – Noldorin

1

Je ne crois pas qu'il existe une norme pour cela, je retournerais le type de l'objet avec le contenu de la chaîne d'un champ d'identification unique (une sorte de «clé primaire»).

12

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 MSDN documentation for the ObjectDisposedException:

L'utilisation typique de ce type est quelque chose comme ce qui suit:

[C#] 
private void CheckDisposed() 
{ 
    throw new ObjectDisposedException(GetType().FullName); 
} 
+0

Je l'ai raté. Mut apprendre à lire les commentaires dans la documentation aussi. – Wilhelm

+0

Ne vous inquiétez pas, il est parti maintenant. –

+1

@JonathonReinhart: Le commentaire a été évidemment retiré de la version .NET 4 de la page. J'ai corrigé le lien ci-dessus afin qu'il se réfère à la version .NET 3.5 qui inclut le commentaire cité. – Albic