You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C#中通过Assembly调用外部EXE方法时触发调用错误

问题分析与解决方案

核心问题1:静态方法调用方式冗余

你要调用的Implementation是静态方法,这类方法属于类本身,完全不需要创建类的实例。你的代码里额外创建了instance并传给Invoke,虽然静态方法调用时传入null也能执行,但这一步不仅多余,还可能因目标类无无参构造函数引发额外错误。

核心问题2:目标方法内部存在空引用

报错的内部异常NullReferenceException是Implementation方法自身代码导致的——说明方法里有未初始化的对象,在调用其成员时触发了空引用错误。


修正后的调用代码

Assembly assembly = Assembly.LoadFrom(@"D:\abc\def\Test\test_1\bin\Debug\TestEngine.exe");
Type programType = assembly.GetType("Test.Program");

// 直接定位静态公共方法,比遍历筛选更高效严谨
MethodInfo implementationMethod = programType.GetMethod(
    "Implementation", 
    System.Reflection.BindingFlags.Public | System.Reflection.BindingFlags.Static
);

object[] parameters = new object[] { "" };
// 静态方法调用时第一个参数传null
implementationMethod.Invoke(null, parameters);

空引用异常排查建议

检查Implementation方法内部代码:

  • 确认所有使用的对象(包括类的静态字段、局部变量)都已完成初始化
  • 对可能为null的对象,先做非空判断再调用其属性或方法

内容的提问来源于stack exchange,提问作者new Talent rising

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 11:55:18