OnCreate Ereignis ?



  • Gleich nach dem Erstellen eines Form muss einige Vorbereitungen durchlaufen. Nun Problem ist, dass in Konstruktor kann ich das nicht reinpacken, weil dann wird es zu früh aufgerufen und in OnLoad ist es bereits zu späht.

    um das klar zu machen:
    ich habe eine abstrakte klasse X von Form abgeleitet. diese klasse wird benutzt als vorlage für alle anderen fensterin der anwendung. nun gibt es sachen die immer gemacht werden sollten. und da die immer gleich sind, macht es sin die automatisch laufen zu lassen. nun kommen wir zu meinem problem.

    public abstract class X : ...Form
    {
      public X()
      {
        Prepare();  // aufruf einer abstrakten Methode
      }
    
      public abstract void Prepare();
    }
    
    public class Y : X
    {
      Object o = null;
      public Y()
      {
        o = new Object();
      }
    
      public override void Prepare()
      {
        O.Methode(); // FEHLER, weil o noch gar nicht existiert. der Konstruktor von Y wurde noch gar nicht aufgerufen
      }
    }
    

    ich hoffe ich habe halbwegs deutlich erklärt.



  • Der Constructor von X wird vor dem Constructor von Y aufgerufen.
    Daher existiert zum Zeitpunkt wo prepare von X aufgerufen wird noch kein Objekt o.

    ms



  • ms schrieb:

    Der Constructor von X wird vor dem Constructor von Y aufgerufen.
    Daher existiert zum Zeitpunkt wo prepare von X aufgerufen wird noch kein Objekt o.

    Das weis ich ja auch selbst, aber ich sehe keine möglichkeit prepare automatisch aufzurufen. nur "per hand" nach dem Y erstellt wurde



  • Du könntest das Object o in prepare() erzeugen anstatt im Constructor von y.



  • hm.. daran habe ich nicht gedacht. mal sehen... danke


Anmelden zum Antworten