Hallo,
ich habe zwei Klassen, die im Prinzip die selben Funktionen enthalten, worin aber die Funktionen (in Abhängigkeit zur Datenbank) anders agieren.
Nun möchte ich, je nach angemeldetem Benutzer, zur Laufzeit entweder mit Klasse A oder mit Klasse B arbeiten. Beide Klassen werden aber durch ein New
ClassA theClass = new ClassA()
bzw.
ClassB theClass = new ClassB()
erzeugt.
Wie müsste ich jetzt eine Funktion schreiben, die mir zur Laufzeit die korrekte Klasse zur Verfügung stellt?
Ich habe jetzt einige Zeit kein C# mehr programmiert und stehe grade hier wie ein Blöder. - Was ihr nach der Frage auch sicher denkt.
Hallo,
Du müsstest dir ein Interface schreiben das beide Klassen implementieren, und dann zur laufzeit per Reflection (Activator.CreateInstance()) oder hardgecoded (if benutzer == "helge") entweder die eine oder andere Klasse instanzieren.
Grüße.
Hallo icolor,
wenn ClassA und ClassB ein gemeinsames Interface implementieren, dann kannst du z.B. auch folgendes schreiben:
IClasses theClass = new ClassA();
bzw.
IClasses theClass = new ClassB();
Für das Realisieren der Auswahl gibt es mehrere Möglichkeiten, wie z.B.:
IClasses theClass = null;
switch (userSetting) {
case UserSetting.SettingA:
theClass = new ClassA();
break;
case UserSetting.SettingB:
theClass = new ClassB();
break;
default:
theClass = new ClassC();
break;
}
Gruß
pinki
Könntest Du das noch einmal für Doofe erklären, bitte?
Sorry, nein, siehe [Hinweis] Wie poste ich richtig? Punkt 1.1.1. Und schon gar nicht ohne konkrete Nachfrage bzw. ohne konkreten Hinweis, was genau du nicht verstanden hast.
Siehe Strategy pattern.
Du hast eine "Basisklasse" in der du einfach nur die Leeren Methoden hast. Hier ist noch keine Funktion gegeben.
Dann implementierst du die Funktionen in deinen Klassen. KlasseA und KlasseB
im Code verwendest du dann später:
Basisklasse variabeleKlasse = new KlasseA();
Wenn du jetzt dem Objekt aber lieber eine Instanz der KlasseB geben möchtest kannst du:
variableKlasse = new KlasseB();
verwenden.
++Rekursion ++
(lat. , die) siehe Rekursion
Weiteres Stichwort: Dependency Injection