Ho questo BdlTabItem
che riceve un parametro di tipo DockableUserControl
e vorrei sapere se è una cattiva pratica creare un riferimento circolare tra i due utilizzando uc.TabItem = this
e new BdlDockableWindow(this)
prima che il costruttore termini.È una cattiva pratica passare "questo" come parametro all'interno del proprio costruttore?
So che questo comportamento può essere considerato molto negativo con codice nativo non gestito (C++). Quindi, anche se non avevo avvertimenti o errori, chiedo qui se dovessi farlo o meno.
public BdlTabItem(BdlTabControl parent, DockableUserControl uc, string title)
{
TabControlParent = parent;
UserControl = uc;
WindowParent = new BdlDockableWindow(this);
this.Content = UserControl;
UserControl.TabItem = this;
}
Vedere http://codeblog.jonskeet.uk/2010/09/02/don-t-let-this-get-away/ per un post sul blog ho scritto sull'argomento piuttosto tempo fa. –
@ Kilouco: nella maggior parte dei casi pratici non ci dovrebbero essere problemi con questo approccio. –
"So che questo comportamento non è nemmeno possibile con C++" ... Continuo a essere stupito dai fatti scorretti che le persone "sanno". Certamente, in C++ c'è una differenza ... l'oggetto in costruzione ha un tipo dinamico del tipo il cui costruttore è in esecuzione, non il tipo più derivato. Ma ancora, perdere 'questo' durante la costruzione del C++ è abbastanza possibile. –