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

