【发布时间】:2017-04-22 13:43:21
【问题描述】:
我正在尝试创建一个看起来像这样的 lambda 表达式(使用反射)
IServiceProvider provider => provider.GetService<TDbContext>()
或者,更具体地说,GetService 是一种扩展方法:
provider => ServiceProviderServiceExtensions.GetService<TDbContext>(provider)
这是我的代码:
var methodInfo = typeof(ServiceProviderServiceExtensions).
GetTypeInfo().
GetMethod("GetService").
MakeGenericMethod(typeof(TDbContext));
var lambdaExpression = Expression.Lambda(
Expression.Call(methodInfo, Expression.Parameter(typeof(IServiceProvider), "provider")),
Expression.Parameter(typeof(IServiceProvider), "provider")
);
var compiledLambdaExpression = lambdaExpression.Compile();
我收到了这个错误
“System.InvalidOperationException”类型的异常发生在 System.Linq.Expressions.dll 但未在用户代码中处理
附加信息:变量 'provider' 类型 从范围“”引用的“System.IServiceProvider”,但不是 定义
【问题讨论】:
标签: c# .net linq reflection .net-core