【发布时间】:2016-12-20 17:01:54
【问题描述】:
我想知道如何从动态加载的 dll 回调主 exe? (注意:这个 dll 将在回调后的某个时间点被卸载)
上下文 C#
我正在设计一个服务原型,该服务在开发期间可以更新其核心。我有一个存根 main,它将对“main dll”进行服务调用。我希望能够回调主 exe,告诉它在完成最新 dll 的新副本后重新加载核心 dll。我有负载 - 卸载工作。但是,我无法回调或更新传递的 IntPtr 以使其工作以及其他类似的想法工作。例如
loader.ExecuteStaticMethod(cMain_DLL, "Class1", "My_CallBack", new object[] {out _Count });
不会编译
我使用了稍微修改的http://www.c-sharpcorner.com/uploadfile/girish.nehte/how-to-unload-an-assembly-loaded-dynamically-using-reflection/来加载和卸载dll,以及调用dll中的函数。
Type[] types = parameters.Select(o=>o.GetType()).ToArray();
MethodInfo MyMethod = MyType.GetMethod(methodName, types); <= can retun null for some objects
MyMethod.Invoke(inst, BindingFlags.InvokeMethod, null, parameters, null);
【问题讨论】: