private static void AppendIL(MethodInfo method, StringWriter sw, ITypeFactory typeFactory) { ILReader reader = ILReaderFactory.Create(method); ExceptionInfo[] exceptions = reader.ILProvider.GetExceptionInfos(); var writer = new RichILStringToTextWriter(sw, exceptions); sw.WriteLine(".method " + method.ToIL()); sw.WriteLine("{"); sw.WriteLine(" .maxstack " + reader.ILProvider.MaxStackSize); byte[] sig = reader.ILProvider.GetLocalSignature(); var lsp = new LocalsSignatureParser(reader.Resolver, typeFactory); var locals = default(Type[]); if (lsp.Parse(sig, out locals) && locals.Length > 0) { sw.WriteLine(" .locals init ("); for (var i = 0; i < locals.Length; i++) { sw.WriteLine($" [{i}] {locals[i].ToIL()}{(i != locals.Length - 1 ? "," : "")}"); } sw.WriteLine(" )"); } sw.WriteLine(); writer.Indent(); reader.Accept(new ReadableILStringVisitor(writer)); writer.Dedent(); sw.WriteLine("}"); }
private static void AppendIL(MethodInfo method, StringWriter sw, ITypeFactory typeFactory) { var reader = ILReaderFactory.Create(method); var exceptions = reader.ILProvider.GetExceptionInfos(); var writer = new RichILStringToTextWriter(sw, exceptions); sw.WriteLine(".method " + method.ToIL()); sw.WriteLine("{"); sw.WriteLine(" .maxstack " + reader.ILProvider.MaxStackSize); var sig = reader.ILProvider.GetLocalSignature(); var lsp = new LocalsSignatureParser(reader.Resolver, typeFactory); var locals = default(Type[]); if (lsp.Parse(sig, out locals) && locals.Length > 0) { sw.WriteLine(" .locals init ("); for (var i = 0; i < locals.Length; i++) { sw.WriteLine($" [{i}] {locals[i].ToIL()}{(i != locals.Length - 1 ? "," : "")}"); } sw.WriteLine(" )"); } sw.WriteLine(); writer.Indent(); reader.Accept(new ReadableILStringVisitor(writer)); writer.Dedent(); sw.WriteLine("}"); }