我正在尝试用C#编写一个指令编辑器,而我却一直在创建指令。我需要能够使用Mono.Cecil将字符串转换为OpCode,但似乎无法做到这一点。如果它更容易我可以创建一个Dictionary<string, OpCode>
并通过枚举OpCodes
中的OpCodes填充它,但是OpCodes
只是包含OpCodes作为变量而不是列表中的类(I认为这可能是针对.NET 1支持的)阻止我枚举它们。这就是我遇到问题的地方,我怎样才能将字符串转换为OpCode,或者通过每个OpCode进行枚举(以更容易/更快的方式)。
答案 0 :(得分:3)
如果表现不是问题,反思会对你有帮助。
这是你的去向。
var opCodes = typeof(OpCodes)
.GetFields(BindingFlags.Static | BindingFlags.Public)
.Where(x=> x.FieldType == typeof(OpCode))
.Select(x=> (OpCode)x.GetValue(null))
.ToArray();
foreach(var opcode in opCodes)
{
//Do whatever with opcode
}