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

C#反射调用含List<long>参数的方法时遇类型不匹配问题求助

问题解决方法

核心问题分析

  • 第一个错误原因:GetList是实例方法(非静态),但反射调用时传入的business是Type类型对象,并非TeacherBusiness的实例,导致目标类型不匹配。
  • 第二个编译错误原因:MethodInfo.Invoke的第二个参数要求是object[]类型,直接传入List<long>无法完成隐式转换,必须将参数包装为object数组。

正确的反射调用代码

var ids = new List<long> { 1, 2, 3 };
// 创建TeacherBusiness的实例,而非仅获取Type对象
var businessInstance = new TeacherBusiness();
var getListMethod = typeof(TeacherBusiness).GetMethod("GetList", new System.Type[] { typeof(List<long>) });
// 第一个参数传入类实例,第二个参数将ids包装进object数组
var entities = getListMethod.Invoke(businessInstance, new object[] { ids });

静态方法特殊处理

如果GetList是静态方法,调用时第一个参数传null即可,无需创建类实例:

var entities = getListMethod.Invoke(null, new object[] { ids });

内容的提问来源于stack exchange,提问作者behnam rahmani

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 13:04:53