2012-06-18 36 views
6

Türetilmiş bir sınıf için temel yapıcının icra edilmediği bir sorun yaşıyorum. Bunu yüzlerce kez yaptım ve temel kurucunun neden çalışmadığı konusunda hayatımı anlayamıyorum. Birinin eksik olduğum basit bir şey bulabileceğini umuyorum. Kodun bir örneği aşağıdadır. Benim temel yapıcımın neden ilk çağrılmadığına dair bir fikri olan var mı? Aynı şekilde uygulanan diğer sınıflarım var ve temel kurucu her zaman ilk olarak adlandırılıyor. İkinci yapıcısı denir çıktığında yeniden aynı sınıfta varsayılan kurucu değil, temel sınıfa aramak istediğiniz gibi görünüyorTemel Oluşturucu Çağrılmıyor

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

Burada miras hiyerarşisini gösterebilir misiniz? – JaredPar

cevap

22

yüzden InitializeComponent çağrılır. base() yerine this()'u deneyin.

+3

+1 Evet, iyi kesinti becerileri. Muhtemelen varsayılan yapıcının "temel yapıcı" olarak adlandırıldığını düşünüyor. –

+4

Teşekkürler, şu anda ne kadar aptal hissettiğimi ifade etmeye hazırlanıyorum. JaredPar'ın miras hiyerarşisini sorması üzerine, problemin açıklamasında ve 30 dakika boyunca ne yapmaya çalıştığımın kusurunu fark ettim. Yardımınız için teşekkürler ve herkesin zamanını bu sabah için beynime bu kadar önemsiz olmayan bir soruyla boşa harcadığım için özür dilerim. – Grasshopper

+0

Böyle bir şey üzerinde protokol nedir? Sorumu sormam gereken şeyi daha iyi yansıtmak için soruyu değiştirmeli miyim? – Grasshopper