Le modèle complet, y compris un outil de finalisation, l'introduction d'une nouvelle méthode virtuelle et "d'étanchéité" de l'original de la méthode dispose est très à usage général, couvrant toutes les bases.
Sauf si vous avez direct poignées sur les ressources non managées (qui devrait être presque jamais), vous n'avez pas besoin d'un outil de finalisation.
Si vous scellez votre classe (et de mon point de vue sur l'étanchéité des classes dans la mesure du possible sont probablement bien connue maintenant - la conception de l'héritage ou de l'interdire) il n'y a aucun point dans l'introduction d'une méthode virtuelle.
Je ne me souviens pas la dernière fois que j'ai mis en oeuvre IDisposable
dans un "complexe" de manière vs de le faire de la manière la plus évidente, par exemple
public void Dispose()
{
somethingElse.Dispose();
}
Une chose à noter est que si vous allez pour vraiment robuste code, vous devriez assurez-vous que vous n'essayez pas de faire quoi que ce soit après que vous avez été éliminés, et de le jeter ObjectDisposedException
le cas échéant. C'est un bon conseil pour les bibliothèques de classes qui seront utilisées par les développeurs du monde entier, mais c'est beaucoup de travail pour très peu de gain si c'est simplement une classe au sein de votre propre espace de travail.