我正在尝试创建一个类似这样的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'中发生, 但未在用户代码中处理
附加信息:引用自''范围的类型为'System.IServiceProvider'的变量'provider',但它没有被定义