Winform identificabile
-
19-08-2019 - |
Domanda
Qual è la migliore pratica per l'implementazione di IDisposable su un Winform?
- Ho una finestra di dialogo che estende System.Windows.Forms.Form
- Il designer.cs generato contiene già un'implementazione del metodo virtuale Dispose (bool)
- Il mio modulo ha un campo aggiunto manualmente che implementa IDisposable
Idealmente, sarei in grado di agganciare l'override Dispos (bool) nel codice generato per disporre l'oggetto IDisposable aggiunto manualmente. Qualche consiglio su come farlo correttamente?
Grazie.
Scott
Soluzione
Puoi spostare l'implementazione di Dispose da .designer.cs e in .cs.
Altri suggerimenti
Ma allora il tuo campo deve essere un Componente (implementa l'interfaccia IComponent o qualcosa di simile). Non sarebbe un po 'eccessivo?
Forse puoi associare un gestore di eventi all'evento Disposing e disporre i tuoi campi in quel gestore di eventi?
(O semplicemente aggiungerli al metodo Dispose - Non penso che sarà un problema, dal momento che il codice nel metodo Dispose non è rigenerato ... Idealmente, l'implementazione del metodo Dispose non dovrebbe essere stata nella classe * .designer.cs ...).
Annullamento della registrazione di qualsiasi evento nel metodo Dispose trovato in designer.cs del modulo
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
_frmFind.RaiseFindEvent -= _frmFind_RaiseFindEvent;
base.Dispose(disposing);
}