Is there a conversion method that takes a char and produces a ConsoleKey?

Viewed 2586

I wonder if there is any helper class in the .NET framework (or somewhere else) that converts chars to ConsoleKey enums.

e.g 'A' should become ConsoleKey.A

Before someone asks why I would want to do that. I want to write a helper that takes a string (e.g. 'Hello World') and converts it into a sequence of ConsoleKeyInfo objects. I need this for some crazy unit tests where I'm mocking user input.

I'm just a little tired of creating glue code on my own so I thought, maybe there is already a way to convert a char to a ConsoleKey enum?

For completeness here is what seems to work great so far

    public static IEnumerable<ConsoleKeyInfo> ToInputSequence(this string text)
    {
        return text.Select(c =>
                               {
                                   ConsoleKey consoleKey;
                                   if (Enum.TryParse(c.ToString(CultureInfo.InvariantCulture), true, out consoleKey))
                                   {
                                       return new ConsoleKeyInfo(c, consoleKey, false, false, false);
                                   }
                                   else if (c == ' ')
                                       return new ConsoleKeyInfo(' ', ConsoleKey.Spacebar, false, false, false);
                                   return (ConsoleKeyInfo?) null;
                               })
            .Where(info => info.HasValue)
            .Select(info => info.GetValueOrDefault());
    }
3 Answers
Related