private static void CompileMiddleware( Type type, ObjectFieldDefinition definition, FieldMiddleware placeholder, ITypeCompletionContext context, string?scope) { IProjectionConvention convention = context.DescriptorContext.GetProjectionConvention(scope); RegisterOptimizer(definition.ContextData, convention.CreateOptimizer()); definition.ContextData[ProjectionContextIdentifier] = true; MethodInfo factory = _factoryTemplate.MakeGenericMethod(type); var middleware = (FieldMiddleware)factory.Invoke(null, new object[] { convention }) !; var index = definition.MiddlewareComponents.IndexOf(placeholder); definition.MiddlewareComponents[index] = middleware; }
private static FieldMiddleware CreateMiddleware <TEntity>( IProjectionConvention convention) => convention.CreateExecutor <TEntity>();