我正试图用C#制作一个指令编辑器,但我一直在创建指令。我需要能够用Mono.Cecil将字符串转换为OpCode,但它似乎无法做到这一点。如果更容易的话,我可以创建一个Dictionary<string, OpCode>
,并通过枚举OpCodes
中的OpCodes来填充它,但是OpCodes
是唯一一个包含OpCodes作为变量的类,而不是在列表中(我认为这可能是为了支持.NET 1),阻止我枚举它们。这就是我的问题所在,我如何将字符串转换为OpCode,或者枚举每个OpCode(以更容易/更快的为准)。
如果性能不是问题,反射会对您有所帮助。
这是你的做法。
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
}