对智商类型的反思<>.

本文关键字:类型 | 更新日期: 2023-09-27 17:55:23

我的实体框架上下文中有一个员工数据库集,可以查询为:

IQueryable employees = _context.Employees;

这个想法是使用反射执行以下方法:

var result= _context.Employees.OfType<PaidEmployee>()

我已经扩展了 Employee 对象以创建一个 PaidEmployee 类。我想使用 REFLECTION 查询 PaidEmployee 的上下文。

Assembly asm = Assembly.LoadFrom("MyModel.dll");
Type t = asm.GetType("PaidEmployee");
var ofType = typeof(Queryable).GetMethod("OfType",
                     BindingFlags.Static | BindingFlags.Public);
var methodinfo = ofType.MakeGenericMethod(t);
var obj = methodinfo.Invoke(employees , null);

当我执行上面的代码时,它给了我错误:

System.Reflection.TargetParameterCountException 被用户取消处理 代码 HResult=-2147352562 消息=参数计数不匹配。
来源=mscorlib 堆栈跟踪: at System.Reflection.RuntimeMethodInfo.InvokeArgumentsCheck(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, 文化信息文化) at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, 文化信息文化) at System.Reflection.MethodBase.Invoke(Object obj, Object[] parameters) 在Tests.test_dynamic。TestMethod2() in e:''Projects''Tests''test_dynamic.cs:line 54 InnerException:

对智商类型的反思<>.

尝试

var obj = methodinfo.Invoke(null, new[] { employees });

OfType是静态的,所以null objInvoke的第一个参数,即用于方法的对象实例)!