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
相关产品推荐
相关产品推荐

