Dynamic switch Fällen
Ich versuche, um eine einfache switch case console-Menü für verschiedene Benutzer: admin
, moderator
, und user
. admin
hätte create, delete, modify, show
Funktionen moderator
- create, modify, show
Funktionen, und user
- create, show
Funktionen, zum von zu wählen.
Admin switch case:
if(userType == "admin")
{
string i = Console.ReadLine();
switch(i):
case "create": Console.WriteLine("Created");
break;
case "modify": Console.WriteLine("Modified");
break;
case "delete":Console.WriteLine("Deleted");
break;
case "show":Console.WriteLine("Showed");
break;
default: Console.WriteLine("Default");
break;
}
Moderator switch case:
if(userType == "moderator")
{
string i = Console.ReadLine();
switch(i):
case "create": Console.WriteLine("Created");
break;
case "modify": Console.WriteLine("Modified");
break;
case "show": Console.WriteLine("Showed");
break;
default: Console.WriteLine("Default");
break;
}
User-switch-case:
if(userType == "user")
{
string i = Console.ReadLine();
switch(i):
case "create": Console.WriteLine("Created");
break;
case "show": Console.WriteLine("Showed");
break;
default: Console.WriteLine("Default");
break;
}
Gibt es eine Möglichkeit, zu Formen, diese switch-Case-Anweisungen in einem dynamischen wechseln? Wenn ich zu denken oder zu erklären, etwas falsch ist, bitte korrigieren Sie mich.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Das dynamische äquivalent zu einer switch-case ist ein Wörterbuch-lookup. Zum Beispiel:
Zur Laufzeit, können Sie ganz einfach hinzufügen und entfernen von Aktionen, die zu jeder Rolle (Gruppe).
Zur Umsetzung der "Standard" - Logik, die Sie verwenden würden, so etwas wie:
Dies ist ein guter Kandidat für die Strategie-Muster.
In der Strategie-Muster, die Funktionalität wird repräsentiert durch ein Objekt, eine Schnittstelle, die übergeben werden können, um. Andere Implementierungen erlauben das Verhalten dynamisch zu ändern.
Beispiel:
sind Sie besser dran mit einer Karte von Funktionen oder Aktionen.
dann wählen Sie die richtige Karte und führen Sie die angegebene Funktion
Schalter (kein Wortspiel beabsichtigt) es um do-check für die Rolle auf jeden Fall. Und dann, wenn es nicht erlaubt ist, es zu tun, es zu überspringen.
i
statt einem string-literal. Sonst werden Sie eines Tages versehentlich den code ein test für lese-Berechtigungen beim ausführen einer mass löschen.