charsをConsoleKey列挙型に変換するヘルパークラスが.NETFramework(または他の場所)にあるのではないかと思います。
e.g 'A' should become ConsoleKey.A
誰かがなぜ私がそれをしたいのかと尋ねる前に。文字列(「HelloWorld」など)を取得して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());
}