Pour quelque raison que ce soit FXCop seems to think Je devrais appeler GC.SuppressFinalize dans Dispose, que je possède ou non un finaliseur.GC.SuppressFinalize doit-il être appelé sur les objets qui n'ont pas de finaliseur?
Ai-je raté quelque chose? Existe-t-il une raison pour appeler GC.SuppressFinalize sur des objets pour lesquels aucun finaliseur n'est défini?
True. En outre, vous devez avoir un finaliseur qui appelle Dispose(). – configurator
True-Object.Finalize est une opération nulle, mais si vous implémentez IDisposable, vous dites que vous avez des ressources à libérer. De MSDN, cela signifie que vous devriez toujours avoir un finaliseur pour les libérer, afin qu'ils soient manipulés correctement. Cela signifie que Finalize appelle Dispose et Dispose supprime la finalisation. –
@configurator Vous ne devriez avoir un finaliseur que si vous possédez directement des ressources non managées (comme des handles). Si vous ne les possédez qu'indirectement, par ex. une référence à un FileStream, pourquoi devriez-vous écrire quelque chose de plus que IDisposable.Dispose() {if (fs! = null) {fs.Dispose(); fs = null; }}? IMO, StyleCop est un outil horrible qui force beaucoup de texte inutile à être écrit et maintenu, et n'ajoute aucune valeur commerciale en retour. –