Me pregunto si hay alguna clase de ayuda en .NET Framework (o en otro lugar) que convierta caracteres en Console Console enums.¿Hay un método de conversión que toma una char y produce una ConsoleKey?
e.g 'A' should become ConsoleKey.A
Antes de que alguien pregunte por qué me gustaría hacer eso. Quiero escribir un ayudante que tome una cadena (por ejemplo, 'Hello World') y la convierta en una secuencia de objetos ConsoleKeyInfo. Necesito esto para algunas pruebas de unidades locas donde me burlo de la entrada del usuario.
Estoy un poco cansado de crear código de pegamento por mi cuenta, así que pensé, ¿tal vez ya hay una forma de convertir un char a una consola ConsoleKey?
Para completar esto es lo que parece funcionar muy bien hasta ahora
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());
}
¿Esto es solo para caracteres y dígitos? No puede tener una asignación de 1 a 1, porque 'ConsoleKey' no distingue la carcasa de caracteres, y no contiene la mayoría de los demás caracteres ASCII. – Groo
Sí, eso es cierto. De acuerdo, lo tengo solo para personajes y espacios en blanco. Agregaré un punto y una coma también. La carcasa no importa porque esta información se conservará en el objeto ConsoleKeyInfo directamente como una char. – Christoph