'高级'控制台应用程序

key*_*oss 13 c# console user-input event-handling

我不确定这个问题是否已在其他地方得到解答,我似乎无法通过谷歌找到任何不是"Hello World"示例...我在C#.NET 4.0中进行编码.

我正在尝试开发一个控制台应用程序,它将打开,显示文本,然后等待用户输入命令,其中命令将运行特定的业务逻辑.

例如:如果用户打开应用程序并输入"help",我想显示一些语句等等.我不知道如何为用户输入编写"事件处理程序"代码.

希望这是有道理的.任何帮助将非常感激!干杯.

Tom*_*son 22

您需要几个步骤才能实现这一目标,但不应该那么难.首先,您需要某种解析您所写内容的解析器.要读取每个命令,只需使用var command = Console.ReadLine(),然后解析该行.并执行命令...主逻辑应该有一个基础看这个(有点):

public static void Main(string[] args)
{
    var exit = false;
    while(exit == false)
    {
         Console.WriteLine();
         Console.WriteLine("Enter command (help to display help): "); 
         var command = Parser.Parse(Console.ReadLine());
         exit = command.Execute();
    }
}
Run Code Online (Sandbox Code Playgroud)

有点,你可能会改变它更复杂.

Parser和命令的代码很简单:

public interface ICommand
{
    bool Execute();
}

public class ExitCommand : ICommand
{
    public bool Execute()
    {
         return true;
    }
}

public static Class Parser
{
    public static ICommand Parse(string commandString) { 
         // Parse your string and create Command object
         var commandParts = commandString.Split(' ').ToList();
         var commandName = commandParts[0];
         var args = commandParts.Skip(1).ToList(); // the arguments is after the command
         switch(commandName)
         {
             // Create command based on CommandName (and maybe arguments)
             case "exit": return new ExitCommand();
               .
               .
               .
               .
         }
    }
}
Run Code Online (Sandbox Code Playgroud)