Интересно, есть ли какой-либо вспомогательный класс в .NET framework (или где-то еще), который преобразует символы в перечисления ConsoleKey.
e.g 'A' should become ConsoleKey.A
Прежде чем кто-нибудь спросит, почему я хотел бы это сделать. Я хочу написать помощник, который берет строку (например, "Hello World" ) и преобразует ее в последовательность объектов ConsoleKeyInfo. Мне нужно это для некоторых сумасшедших модульных тестов, где я издеваюсь над вводом пользователя.
Я просто немного устал от создания кода клея самостоятельно, поэтому я подумал, может быть, есть способ конвертировать char в перечисление ConsoleKey?
Для полноты здесь есть то, что пока работает отлично
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());
}