我需要知道什么是(ConsoleKeyInfo)Enum.Parse除外的字符串。或将字符串转换为ConsoleKeyInfo的另一种方法。
我尝试过直接将ConsoleKeyInfos转换为字符串,但这给我留下了一堆“ ConsoleKeyInfo”字符串。 转换为ConsoleKeyInfo.Key会留下键,而且解析也不例外。
for (int i = 0; i < strListTemp.Count; i++)
{
keyBinds.Add((ConsoleKeyInfo)Enum.Parse(typeof(ConsoleKeyInfo), strListTemp[i]));
}
strListTemp是具有转换后的ConsoleKeyInfos的字符串列表。 keyBinds是一个ConsoleKeyInfo列表。
错误:
System.ArgumentException: 'Type provided must be an Enum.
Parameter name: enumType'
它需要转换为字符串并返回,因为我需要将其保存在文件中。 如果可以将ConsoleKeyInfos直接存储到文件中,请告诉我。
谢谢!
伊曼纽尔
答案 0 :(得分:0)
ConsoleKeyInfo
具有Serializable
属性,这意味着可以使用BinaryFormatter
将其保存到文件中。
using (FileStream fs = new FileStream("my console key info.dat", FileMode.Create)) {
BinaryFormatter formatter = new BinaryFormatter();
formatter.Serialize(fs, yourConsoleKeyInfo);
}
要反序列化,只需致电formatter.Deserialize
如果要使用字符串表示形式,则需要创建包含5种内容的字符串:
KeyChar
属性值的字符Key
属性的值这5个值可以用字符串中的空格分隔。要对其进行解析,请使用空格将字符串分割,然后将每个值转换为相应的类型,然后将其传递给ConsoleKeyInfo
构造函数。