2012-06-18 24 views
6

Ich habe ein Problem, bei dem der Basiskonstruktor für eine abgeleitete Klasse nicht ausgeführt wird. Ich habe das hundert Mal getan und kann nicht herausfinden, warum der Basiskonstruktor nicht ausgeführt wird. Ich hoffe, dass jemand etwas Einfaches finden kann, das mir fehlt. Ein Beispiel für den Code ist unten. Hat jemand eine Idee, warum mein Basiskonstruktor nicht zuerst aufgerufen wird? Ich habe andere Klassen, die auf die gleiche Weise implementiert sind, und der Basiskonstruktor wird immer zuerst aufgerufen.Der Basiskonstruktor wird nicht aufgerufen

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

Können Sie hier die Vererbungshierarchie anzeigen? – JaredPar

Antwort

22

Es sieht aus wie Sie den Standard-Konstruktor in der gleichen Klasse nennen wollen, nicht die Basisklasse, wird so InitializeComponent aufgerufen, wenn der zweite Konstruktor aufgerufen wird. Versuchen Sie this() anstelle von base().

+3

+1 Ja, gute Abzugsfähigkeiten. Er denkt wahrscheinlich, dass der Standardkonstruktor der "Basiskonstruktor" genannt wird. –

+4

Danke, ich wollte gerade ausdrücken, wie dumm ich mich gerade fühle. Sobald JaredPar nach der Vererbungshierarchie fragte, erkannte ich den Fehler in meiner Beschreibung des Problems und was ich in den letzten 30 Minuten versucht habe zu tun. Danke für die Hilfe und Entschuldigung dafür, dass wir alle Zeit mit so einer trivialen Frage verschwendet haben, die heute Morgen aus irgendeinem Grund für mein Gehirn nicht so trivial war. – Grasshopper

+0

Was ist Protokoll auf so etwas? Sollte ich die Frage modifizieren, um besser zu reflektieren, was meine Frage hätte sein sollen? – Grasshopper