2
У меня есть этот код:Ошибка при попытке вызвать метод
var work = new DynamicMethod("work", null, Type.EmptyTypes);
var il = work.GetILGenerator();
il.Emit(OpCodes.Ldstr, "a");
il.Emit(OpCodes.Call, typeof(Console).GetMethod("WriteLine", new Type[]{typeof(string)}));
var d = (Action)work.CreateDelegate(typeof(Action));
d();
Я просто пытаюсь создать новый метод с помощью System.Reflection.Emit. Но он бросает меня эта ошибка:
Common Language Runtime detected an invalid program.
Кто-нибудь знает, как я должен исправить это работать, или где ошибка? Пожалуйста помоги.
Да спасибо. Я думал, что в методе sub не потребуется добавлять 'ret'. У меня только один вопрос. Некоторое время, прежде чем он напечатал мне «Операция может дестабилизировать время исполнения». Зачем? – user35443
@ user35443 Я не уверен, почему вы можете видеть сообщение «может дестабилизировать», но [этот пост] (http://weblogs.asp.net/mehfuzh/archive/2009/06/07/operation-could-destabilize -the-runtime-reflection-emit-and-common-pitfalls.aspx) может быть связано с проблемой, которую вы описываете. – dasblinkenlight
Это не то, что я искал, но я решил эту проблему. Только один маленький вопрос: Ldarg_0 в конструкторе «этот» объект? – user35443