我想知道.NET 框架(或其他地方)中是否有任何帮助类将字符转换为 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());
}