Hallo Liste,
ich habe hier ein Problem, bei dem ich mich irgendwie verheddert habe und aus dem Fitz meine Hirnwindungen nicht mehr rauskomme.
Ich habe eine statische Klasse, die verschiedene Methoden bereitstellt. Also etwa so:
class Klasse1 {
private static string meinName="Testname";
public static string Beispiel{
get { return "Das ist ein sinnloses Beispiel von " + meinName;}
}
}
soweit ist ja alles prima.
Nun brauche ich aber 2 Arten dieser Klasse, also wo nur ein paar private Variablen anders gesetzt sind. Etwa so:
class Klasse1a {
private static string meinName="Testname2";
public static string Beispiel{
get { return "Das ist ein sinnloses Beispiel von " + meinName;}
}
}
Es liegt ja nun nahe, dass Klasse1a von Klasse1 erbt, aber da habe ich mich nun verheddert.
Hat jemand von euch eine Idee, wie ich das anstelle?
Danke
Mach in beiden Klassen statische Constructors und setze die Werte der privaten Variablen in diesem statischen Constructor.
Früher war ich unentschlossen, heute bin ich mir da nicht mehr so sicher...
Danke für die schnelle Antwort...
aber leider sehe ich den Wald vor lauter Bäumen nicht.
Ich habe Also folgende 2 Klassen:
class Klasse1 {
private static string meinName;
static Klasse1() {
meinName="Testname";
}
public static string Beispiel{
get { return "Das ist ein sinnloses Beispiel von " + meinName;}
}
}
class Klasse1a : Klasse1 {
private static string meinName;
static Klasse1() {
meinName="Testname2";
}
}
Wenn ich jetzt
Klasse1a.Beispiel
aufrufe, kommt trotzdem "Testname" und nicht "Testname2".
Das ist korrekt. Damit du "Testname2" bekommst, müßtest du meinName als "virtual" definieren. Das ist aber nicht erlaubt (statische Member dürfen nicht als virtual deklariert werden).
Merke: Polymorphie und statische Klassen schließen sich aus.
Hallo ayrtonsenna,
oder noch kürzer: was du willst, geht nicht.
Du könntest aber auf den Singleton-Pattern ausweichen und das eine Objekt dann das machen lassen, was du jetzt die Klasse machen lässt.
herbivore
Aryton, lass mich raten, du kommst aus der Delphi-Welt...... 😉
Ich frag mich schon länger, warum das in .NET nicht geht. In Delphi gings ja auch.
Danke für die vielen Antworten... 👍
Den Tipp mit dem Singleton werde ich morgen mal probieren.
@svenson: Respekt... nicht schlecht geraten.
Sven