private TaskFunc CreateCallDelegate(IServiceProvider serviceProvider) { var contextParameter = Expression.Parameter(typeof(ITaskContext)); var expression = TaskBuilderUtils.ApplyMiddlewares(serviceProvider, contextParameter, Expression.Lambda <Func <Task> >( Expression.Call( _delegate.Method.IsStatic ? null : Expression.Constant(_delegate.Target), _delegate.Method, TaskBuilderUtils.MapParameters(serviceProvider, contextParameter, _delegate.Method) ) )); var taskFuncExpression = Expression.Lambda <TaskFunc>(expression.Body, contextParameter); Console.WriteLine(taskFuncExpression); return(taskFuncExpression.Compile()); }
private TaskFunc CreateCallDelegate(IServiceProvider serviceProvider) { var contextParameter = Expression.Parameter(typeof(ITaskContext)); var expression = TaskBuilderUtils.ApplyMiddlewares(serviceProvider, contextParameter, Expression.Lambda <Func <Task> >( Expression.Call( _methodInfo.IsStatic ? null : Expression.Constant(serviceProvider.GetRequiredService(_taskContainerType)), _methodInfo, TaskBuilderUtils.MapParameters(serviceProvider, contextParameter, _methodInfo) ) )); var taskFuncExpression = Expression.Lambda <TaskFunc>(expression.Body, contextParameter); Console.WriteLine(taskFuncExpression); return(taskFuncExpression.Compile()); }