Non è necessario utilizzare il modello di Dispose + Finalizer pesante ("doloroso") su una classe IDisposable, se la classe è sigillata e la classe non ha risorse non gestite.
In questa situazione, puoi usare un sottoinsieme del pattern Dispose + Finalizer, che ha solo public Dispose()
, non ha finalizzatore e la classe è sealed.
La ragione per sigillare la classe è di evitare i problemi di "Cosa succede se una classe figlia ha risorse non gestite?" e "Cosa succede se una classe figlia in futuro avrà risorse non gestite?"
Joe Duffy, ex Microsoft, ha un lungo articolo (più di 30 pagine) che spiega come implementare correttamente IDisposable
e tutte le implementazioni dei sottoinsiemi di permutazioni.
I contributori all'articolo includono Herb Sutter, Brian Grunkemeyer, Jeff Richter e altri luminari C #. L'articolo è molto più approfondito di ciò che viene presentato su MSDN.
Ahimè, il nuovo motore di blog di Joe Duffy non ha fatto un buon lavoro nel preservare l'articolo originale del 2005, quindi sembra un po 'mungito. Ecco il link: link
Vorrei poter allegare il mio documento MS-Word che contiene l'intero articolo di Joe Duffy in un formato molto migliore. : - (