C# MethodBuilder.CreateDelegate引发异常:';派生类必须提供一个实现;
我想从全局动态方法中获取委托的实例,当我执行最后一步时,从MethodBuilder类调用CreateDelegate的方法,它会引发这样的异常,我试图找到.net framework的代码源以查找原因,但失败了,有人能帮我解决这个问题吗C# MethodBuilder.CreateDelegate引发异常:';派生类必须提供一个实现;,c#,typebuilder,C#,Typebuilder,我想从全局动态方法中获取委托的实例,当我执行最后一步时,从MethodBuilder类调用CreateDelegate的方法,它会引发这样的异常,我试图找到.net framework的代码源以查找原因,但失败了,有人能帮我解决这个问题吗 [TestMethod] public void Test() { //THESE CODE COPIES FROM MSDN AssemblyBuilder assembly = AssemblyBui
[TestMethod]
public void Test()
{
//THESE CODE COPIES FROM MSDN
AssemblyBuilder assembly = AssemblyBuilder.DefineDynamicAssembly(new AssemblyName("TempAssembly"), AssemblyBuilderAccess.RunAndCollect);
ModuleBuilder module = assembly.DefineDynamicModule("TempModule");
MethodBuilder method = module.DefineGlobalMethod
("MyMethod1", MethodAttributes.Static | MethodAttributes.Public,
null, null);
ILGenerator generator = method.GetILGenerator();
generator.EmitWriteLine("Hello World from global method.");
generator.Emit(OpCodes.Ret);
// Fix up the 'TempModule' module .
module.CreateGlobalFunctions();
//ERROR:
Action action = method.CreateDelegate(typeof(Action), null) as Action;
action();
}
几分钟后,我明白了全局方法是为Visual Basic.Net设计的。
但是,您也可以使用c访问它,因此每个方法都必须在c中有一个声明类型,所以如果您尝试使用此类函数,您总是会遇到这样的异常。我认为这个问题现在可以解决了,不需要更多的答案,谢谢,我把这个答案留在这里是为了帮助其他一些将来也会遇到同样问题的人。