2012-06-18 20 views
6

Tengo un problema por el cual el constructor base para una clase derivada no se está ejecutando. Lo he hecho cientos de veces y no puedo entender por qué el constructor base no se está ejecutando. Espero que alguien pueda encontrar algo simple que me falta. Un ejemplo del código está debajo. ¿Alguien tiene alguna idea de por qué mi constructor base no se llama primero? Tengo otras clases que se implementan de la misma manera y el constructor base siempre se llama primero.El constructor base no recibe la llamada

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

¿Puedes mostrar la jerarquía de herencia aquí? – JaredPar

Respuesta

22

Parece que desea llamar el constructor por defecto en la misma clase, no a la clase base, por lo InitializeComponent se llama cuando el segundo constructor se llama. Pruebe this() en lugar de base().

+3

+1 Sí, buenas habilidades de deducción. Probablemente piense que el constructor predeterminado se llama el "constructor base". –

+4

Gracias, me estaba preparando para expresar lo tonto que me siento en este momento. Tan pronto como JaredPar solicitó la jerarquía de herencia, me di cuenta del error en mi descripción del problema y de lo que he intentado hacer durante los últimos 30 minutos. Gracias por la ayuda y perdón por perder el tiempo de todos con una pregunta tan trivial que no fue tan trivial para mi cerebro esta mañana por alguna razón. – Grasshopper

+0

¿Qué es el protocolo en algo como esto? ¿Debo modificar la pregunta para reflejar mejor cuál debería haber sido mi pregunta? – Grasshopper

Cuestiones relacionadas