"Avancé" Application Console
Je ne sais pas si cette question a été répondue par ailleurs et je n'arrive pas à trouver quelque chose par le biais de google qui n'est pas un exemple "Hello World"... je code en C# .NET 4.0.
Je suis en train de développer une console de l'application qui va ouvrir, afficher du texte, et puis attendre que l'utilisateur les commandes d'entrée, où les commandes s'exécutent en particulier de la logique métier.
Par exemple: Si l'utilisateur ouvre l'application et les types de "l'aide", je veux afficher un certain nombre de déclarations, etc etc. Je ne suis pas sûr de savoir comment code le "gestionnaire d'événement" pour la saisie de l'utilisateur.
Espérons que cela a du sens. Toute aide serait grandement appréciée!
Des acclamations.
Je voudrais vraiment, mais je n'ai pas vraiment le code parce que je ne suis pas sûr où commencer...
OriginalL'auteur keynesiancross | 2011-01-05
Vous devez vous connecter pour publier un commentaire.
Vous avez besoin de plusieurs étapes pour atteindre cet objectif, mais il ne devrait pas être difficile. D'abord, vous avez besoin d'un analyseur qui analyse ce que vous écrivez. À lire chaque commande suffit d'utiliser
var command = Console.ReadLine()
, et ensuite d'analyser cette ligne. Et exécuter la commande... Principales de la logique devrait avoir une base à la recherche de ce (genre de):Sorte de, vous pourriez probablement changer pour être plus compliqué.
Le code de la
Parser
et de commande est une sorte de simple:Désolé, comment fonctionne l'interface de travail dans ce cas? Je n'ai pas travaillé avec des interfaces beaucoup, de sorte que peut-être mon problème...
L'interface, il suffit de spécifier la méthode d'un ceratin objet doit avoir. Avec cela en place, vous pouvez définir plusieurs objets qui hérite de l'interface, et laissez votre analyseur de créer ces objets pour vous. Vous pouvez modifier l'interface à ce que jamais vous vous sentez comme, je l'ai fait avec un simple
Execute
qui renvoietrue
si le programme doit quitter. Je peux mettre à jour avec une commande simple et l'échantillon.+1 Très belle et propre conception.
Merci... et une bonne chose avec cette solution est que chaque
Command
"vie" dans leur propre contexte, en quelque sorte. Donc, rien n'empêche une commande de demander à l'utilisateur avec plus de questions.OriginalL'auteur Tomas Jansson
Je sais que c'est une vieille question, mais j'étais à la recherche d'une réponse trop. J'ai été incapable de trouver un simple si, si je construit InteractivePrompt. Il est disponible comme un Package NuGet et vous pouvez facilement étendre le code qui est sur GitHub. Il dispose d'une histoire pour la session en cours également.
Les fonctionnalités de la question pourrait être mis en œuvre avec InteractivePrompt:
OriginalL'auteur sorrell
C'est assez facile, il suffit d'utiliser la
Console.WriteLine
etConsole.ReadLine()
méthodes. À partir de la ReadLine vous obtenir une chaîne de caractères. Vous pourriez avoir un si horrible que l'énoncé de valider cela contre l'on sait ou devrait entrées. Mieux serait d'avoir une table de recherche. Plus sophistiqué serait d'écrire un analyseur syntaxique. Cela dépend vraiment de combien sont complexes les entrées peuvent être.OriginalL'auteur John Pickup
Console.WriteLine
Console.ReadLine
etConsole.ReadKey
sont vos amis. ReadLine et ReadKey attend une entrée de l'utilisateur. Lestring[] args
aurez tous vos paramètres tels que les "aide". Le tableau est créé en séparant les arguments de ligne de commande par des espaces.OriginalL'auteur Joe
Si vous êtes à la recherche pour analyser les commandes qui ont d'autres choses comme les paramètres, par exemple "manipuler file.txt" ensuite, cela seul ne fonctionne pas. Mais vous pouvez par exemple utiliser
String.Split
pour séparer l'entrée dans une commande et les arguments.OriginalL'auteur Tesserex
Un exemple:
je suis d'accord avec ça, mais j'ai compris qu'il est à la recherche pour le code qu'il peut apprendre de, et ce n'est pas trop compliqué. Il est exact que la logique devrait être séparés.. À la fin les deux échantillons de votre et le mien donne un résultat identique.
Il a certainement le même résultat à la fin, mais je ne pense pas que ma solution est plus complexe et il est important que vous apprenez comment faire les choses de la bonne façon.... même si le mien est probablement pas adapté pour tout le monde mais le design est quelque chose que vous devriez penser. J'ai même envisager de ma solution plus facile, car il est beaucoup plus "fluent" lorsque vous le lisez et que vous passez tous les détails si vous n'en avez pas besoin. Sur un haut niveau, il s seulement, la commande de lecture, l'analyse, la commande et la dernière exécution de la commande. Qui est, vous pouvez ignorer les détails sur la façon dont la commande est analysée et la façon dont il est exécuté.
yep, je signe
OriginalL'auteur HABJAN
C'est très simpliste, mais qui pourraient répondre à vos besoins.
OriginalL'auteur Brett