Per qualche motivo FXCop seems to think dovrei chiamare GC.SuppressFinalize in Dispose, indipendentemente dal fatto che disponga o meno di un finalizzatore.GC.SuppressFinalize dovrebbe essere richiamato su oggetti che non hanno un finalizzatore?
Mi manca qualcosa? C'è un motivo per chiamare GC.SuppressFinalize su oggetti che non hanno definito il finalizzatore?
Vero. Inoltre, dovresti avere un finalizzatore che chiami Dispose(). – configurator
True- Object.Finalize è un'opzione nulla, ma se stai implementando IDisposable, stai dicendo che hai risorse da liberare. Da MSDN, ciò significa che devi sempre avere un finalizzatore per liberarli, quindi vengono gestiti correttamente. Ciò significa avere Finalize call Dispose, e Dispose sopprimere la finalizzazione –
@configurator Si dovrebbe avere un finalizzatore solo se si possiedono risorse non gestite direttamente (come handle). Se li possiedi solo indirettamente, ad es. un riferimento a un FileStream, perché dovresti scrivere qualcosa di più di IDisposable.Dispose() {if (fs! = null) {fs.Dispose(); fs = null; }}? IMO, StyleCop è uno strumento terribile che costringe MOLTO testo inutile a essere scritto e mantenuto, e in cambio non aggiunge alcun valore aziendale. –