C# Methode wird beim erstellen eines Objekts IMMER aufgerufen

Rooky420

Cadet 4th Year
Registriert
Nov. 2015
Beiträge
98
Hallo zusammen,

gibt es eine Möglichkeit eine Methode beim erstellen eines objekts immer aufzurufen?
Beispiel

Code:
class Oberklasse
{
public Oberklasse()
{
WichtigeMethode();
}

public void WichtigeMethode()
{
//so sth.
}
}

class Unterklasse : Oberklasse
{
public Unterklasse()
{
//WichtigeMethode() wird nicht aufgerufen
}
}

Sagen wir ich stelle eine DLL bereit mit der klasse "Oberklasse" von der ich weiß dass sie irgendwo von irgendjemanden abgeleitet wird (Unterklasse).

Kann ich in der Oberklasse irgendwie sicherstellen dass "WichtigeMethode()" beim erstellen eines Objekts aufgerufen wird?
Wird nämlich der Konstruktor in der Unterklasse Überschrieben und nicht explizit der base Konstruktor aufgerufen wird "WichtigeMethode()" ja nicht beim erstellen von Unterklasse aufgerufen.

Gibt es einen weg um in der Oberklasse sicherzustellen dass die methode beim erstellen des Objekts aufgerufen wird?

Lg,
Rooky420
 
class Unterklasse : Oberklasse
{
public Unterklasse() : Oberklasse()
{
//WichtigeMethode() wird jetztaufgerufen
}
}
 
Rooky420 schrieb:
Wird nämlich der Konstruktor in der Unterklasse Überschrieben und nicht explizit der base Konstruktor aufgerufen wird "WichtigeMethode()" ja nicht beim erstellen von Unterklasse aufgerufen.
Das ist falsch. Ein Konstruktor der Basisklasse wird immer aufgerufen.
Füge doch mal eine Ausgabe in "WichtigeMethode" ein und erstelle ein neues Objekt von der Unterklasse.

@Bunshichi: Das ist kein valides C#. Wenn dann public Unterklasse() : base() { // ... }, aber das will TE ja explizit nicht (und es auch nicht nötig).
 
Zuletzt bearbeitet:
@Rooky420

Das funktioniert eigentlich genau so wie du es haben willst.
Beispiel:
Code:
using System;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            var unterklasse = new Unterklasse();

            Console.ReadLine();
        }
    }

    public class Oberklasse
    {
        public Oberklasse()
        {
            WichtigeMethode();
        }

        private void WichtigeMethode()
        {
            Console.WriteLine("Hello from Oberklasse");
        }
    }

    public class Unterklasse : Oberklasse
    {
        public Unterklasse()
        {
            AndereMethode();
        }

        private void AndereMethode()
        {
            Console.WriteLine("Hello from Unterklasse");
        }
    }
}
Ausgabe:
Hello from Oberklasse
Hello from Unterklasse

Hier mal ein Artikel dazu.
http://jonskeet.uk/csharp/constructors.html

Gruß
Kami
 

Ähnliche Themen

Zurück
Oben