'Advanced' - Konsole-Anwendung
Ich bin mir nicht sicher, ob diese Frage beantwortet wurde an anderer Stelle und ich kann nicht scheinen, nichts zu finden über google, das ist nicht eine "Hello World" - Beispiel... ich bin Programmierung in C# .NET 4.0.
Ich versuche zu entwickeln, um eine Konsole-Anwendung wird geöffnet, text anzeigen, und warten Sie dann, bis der Benutzer die Eingabe von Befehlen, wobei die Befehle ausgeführt werden, insbesondere business-Logik.
Beispiel: Wenn der Benutzer die Anwendung öffnet, und die Typen "helfen", ich möchte Anzeige eine Reihe von Aussagen etc etc. Ich bin mir nicht sicher, wie man code 'event-handler' für Benutzereingaben obwohl.
Hoffentlich ist dies sinnvoll. Jede Hilfe wäre sehr geschätzt werden!
Cheers.
- Code eine einfache Anwendung, die sagt "Befehl nicht gefunden", egal was der Benutzer eingibt. Dann veröffentlichen Sie Ihren code und machen Sie Ihre Frage konkreter.
- Ich würde auf jeden Fall, aber ich glaube nicht wirklich, dass jeder code, weil ich bin mir nicht sicher, wo Sie anfangen...
Du musst angemeldet sein, um einen Kommentar abzugeben.
Müssen Sie mehrere Schritte, um dies zu erreichen, aber es sollte nicht so schwer sein. Zuerst müssen Sie eine Art parser, der analysiert, was Sie schreiben. Lesen Sie jeden Befehl nur verwenden
var command = Console.ReadLine()
, und dann analysieren die Linie. Und den Befehl ausführen... Hauptsache Logik sollte eine Basis, suchen Sie diese (Art von):Art, wahrscheinlich könnte man das ändern komplizierter.
Den code für die
Parser
und Befehl ist sozusagen straight forward:Execute
zurückgibttrue
sollte das Programm beenden. Ich kann das update mit einem einfachen Befehl und Beispiel.Command
"Leben" in Ihrem eigenen Kontext irgendwie. Also nichts hält einen Befehl, der Benutzer aufgefordert wird, mit mehr Fragen.static
für dieParser
Methode. Können Sie uns die genauen Ausnahme?static
Schlüsselwort, um dieParse
Methode, ich aktualisierte den code zu reflektieren, die vor den vorherigen Kommentar.dict[commandName](args)
anstelle des switch/case.Ich weiß, das ist eine alte Frage, aber ich war auf der Suche für eine Antwort zu. Ich war nicht in der Lage zu finden, ein einfaches, aber, so baute ich InteractivePrompt. Es ist erhältlich als NuGet-Paket und man kann leicht erweitern die Codes, die auf GitHub. Es verfügt über eine Geschichte, die für die aktuelle Sitzung auch.
Funktionen, die in die Frage umgesetzt werden könnte, auf diese Weise mit InteractivePrompt:
Dies ist leicht genug, verwenden Sie einfach die
Console.WriteLine
undConsole.ReadLine()
Methoden. Von der ReadLine-Sie bekommen einen string. Sie hätten eine schreckliche if-Anweisung, um zu prüfen, ob gegen bekannte/erwartete Eingänge. Besser wäre eine lookup-Tabelle. Die meisten anspruchsvollen, wäre die Erstellung einer parser. Es hängt wirklich davon ab, wie Komplex die Eingänge werden kann.Console.WriteLine
Console.ReadLine
undConsole.ReadKey
sind deine Freunde. ReadLine und ReadKey wartet auf Benutzereingaben. Diestring[] args
haben alle Ihre Parameter wie 'Hilfe' in Ihnen. Das array wird erstellt durch die Trennung der Kommandozeilen-Argumente durch Leerzeichen.Wenn Sie schauen, um zu analysieren, Befehlen, andere Dinge in Ihnen wie Parameter, zum Beispiel "manipulieren file.txt" dann ist das allein wird nicht funktionieren. Aber man könnte zum Beispiel die Verwendung
String.Split
zum trennen der Eingabe in einen Befehl und Argumente.Ein Beispiel:
Dies ist sehr simpel, aber könnte Ihre Bedürfnisse zu erfüllen.