2012-06-18 12 views
6

Mam problem, w którym konstruktor podstawowy dla klasy pochodnej nie jest wykonywany. Zrobiłem to setki razy i nie mogę się domyślić, dlaczego konstruktor bazowy nie jest wykonywany. Mam nadzieję, że ktoś może znaleźć coś prostego, czego mi brakuje. Przykład kodu znajduje się poniżej. Czy ktokolwiek ma jakiś pomysł, dlaczego mój konstruktor bazowy nie jest wywoływany jako pierwszy? Mam inne klasy, które są zaimplementowane w ten sam sposób, a konstruktor bazowy jest zawsze nazywany pierwszym.Podstawowy konstruktor nie jest nazywany

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

Czy możesz tutaj pokazać hierarchię dziedziczenia? – JaredPar

Odpowiedz

22

Wygląda jak chcesz wywołać konstruktora domyślnego w tej samej klasie, a nie klasę bazową, więc InitializeComponent jest wywoływana gdy drugi konstruktor zostanie wywołany. Wypróbuj this() zamiast base().

+3

+1 Tak, dobre umiejętności dedukcji. Prawdopodobnie myśli, że domyślny konstruktor jest nazywany "konstruktem podstawowym". –

+4

Dzięki, właśnie szykowałem się wyrazić, jak głupi jestem teraz. Gdy tylko JaredPar poprosił o hierarchię dziedziczenia, zdałem sobie sprawę z luki w moim opisie problemu i tego, co próbowałem zrobić przez ostatnie 30 minut. Dziękuję za pomoc i przepraszam, że marnowałem czas na tak trywialne pytanie, które z jakiegoś powodu nie było tak trywialne dla mojego mózgu dziś rano. – Grasshopper

+0

Co to jest protokół na coś podobnego? Czy powinienem zmodyfikować pytanie, aby lepiej odzwierciedlało moje pytanie? – Grasshopper

Powiązane problemy