Я пытаюсь создать лямбда-выражение (используя Reflection), которое выглядит так
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' указана из области видимости '', но не определена