2012-06-18 17 views
6

Ho un problema in cui il costruttore base di una classe derivata non viene eseguito. L'ho fatto centinaia di volte e non riesco a capire perché la vita del costruttore di base non sia in esecuzione. Spero che qualcuno possa trovare qualcosa di semplice che mi manca. Di seguito è riportato un esempio del codice. Qualcuno ha idea del motivo per cui il mio costruttore di base non viene chiamato per primo? Ho altre classi implementate nello stesso modo e il costruttore di base viene sempre chiamato prima.Il costruttore base non viene chiamato

if (item.GetType() == typeof(OtherChargeItem)) 
{ 
    OtherChargeItemAddUpdateTest test = new OtherChargeItemAddUpdateTest((OtherChargeItem)item); 
    test.StartPosition = FormStartPosition.CenterParent; 
    test.ShowDialog(); 
} 

public OtherChargeItemAddUpdateTest() 
{ 
    InitializeComponent(); 
} 

public OtherChargeItemAddUpdateTest(OtherChargeItem item) 
     : base() 
{ 
    currentItem = item; 
} 
+3

Puoi mostrare la gerarchia dell'ereditarietà qui? – JaredPar

risposta

22

Sembra che si desidera chiamare il costruttore di default nella stessa classe, non la classe base, in modo InitializeComponent viene chiamato quando il secondo costruttore viene chiamato. Prova this() anziché base().

+3

+1 Sì, buone capacità di deduzione. Probabilmente pensa che il costruttore predefinito sia chiamato "costruttore base". –

+4

Grazie, mi stavo solo preparando per esprimere quanto mi sento stupido in questo momento. Non appena JaredPar ha chiesto la gerarchia dell'ereditarietà, mi sono reso conto della falla nella mia descrizione del problema e di ciò che ho cercato di fare negli ultimi 30 minuti. Grazie per l'aiuto e scusa per aver sprecato il tempo di tutti con una domanda così banale che non è stata così banale per il mio cervello stamattina per qualche motivo. – Grasshopper

+0

Che cos'è il protocollo su qualcosa di simile? Dovrei modificare la domanda per riflettere meglio su quale dovrebbe essere la mia domanda? – Grasshopper

Problemi correlati