我正试图在C#中制作一个指令编辑器,并且我被困在创建指令上。我需要能够使用OpCode将字符串转换为Mono.Cecil,但它似乎无法做到这一点。如果更容易的话,我可以创建一个Dictionary<string, OpCode>并通过OpCodes中的OpCodes枚举来填充它,但是OpCodes只是将OpCodes作为变量而不是在列表中包含的类(我认为这可能是为了支持.NET 1),从而阻止了我枚举它们。这就是我讨论问题的地方,我如何将字符串转换为OpCode,或者枚举每个OpCode (哪种方法更容易/更快)。
发布于 2013-11-25 09:03:38
在这里,如果性能不是问题,反射将对您有所帮助。
这就是你该怎么做。
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
}https://stackoverflow.com/questions/20187878
复制相似问题