因此,我尝试使用 ilgenerator 通过动态方法从外部 DLL 调用方法。
delegate void Write(string text);
static void Main(string[] args)
{
byte[] bytes = File.ReadAllBytes(@"externmethod.dll");
var assembly = Assembly.Load(bytes);
var method = assembly.GetTypes()[0].GetMethod("Write");
var dynamicMethod = new DynamicMethod("Write", typeof(void), new Type[] { typeof(string) });
var ilGenerator = dynamicMethod.GetILGenerator();
ilGenerator.EmitCall(OpCodes.Call, method, null);
var delegateVoid = dynamicMethod.CreateDelegate(typeof(Write)) as Write;
delegateVoid("test");
Console.ReadLine();
}
以及 DLL 代码:
using System;
class program
{
public static void Write(string text)
{
Console.WriteLine(text);
}
}
但我收到了这个奇怪的错误:
test.exe 中发生了“System.InvalidProgramException”类型的未处理异常
附加信息:公共语言运行时检测到无效程序。
而且我不知道我做错了什么?