将String转换为OpCode

时间:2013-11-25 08:34:48

标签: c# .net cil opcode mono.cecil

我正在尝试用C#编写一个指令编辑器,而我却一直在创建指令。我需要能够使用Mono.Cecil将字符串转换为OpCode,但似乎无法做到这一点。如果它更容易我可以创建一个Dictionary<string, OpCode>并通过枚举OpCodes中的OpCodes填充它,但是OpCodes只是包含OpCodes作为变量而不是列表中的类(I认为这可能是针对.NET 1支持的)阻止我枚举它们。这就是我遇到问题的地方,我怎样才能将字符串转换为OpCode,或者通过每个OpCode进行枚举(以更容易/更快的方式)。

1 个答案:

答案 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
}