private IEnumerable <IDirectiveMiddleware> ExtractMiddlewares( IDirectiveMiddlewareDescriptor[] middlewareDescriptors, CompiledTypes compiledTypes) { for (var i = 0; i < middlewareDescriptors.Length; i++) { string delegateName = ClassSourceCodeGenerator.GetDelegateName(i); FieldInfo field = compiledTypes.MiddlewareType.GetField( delegateName, BindingFlags.Static | BindingFlags.Public); yield return(new DirectiveDelegateMiddleware( middlewareDescriptors[i].DirectiveName, (DirectiveMiddleware)field.GetValue(field))); } }
private IEnumerable <FieldResolver> ExtractResolvers( IFieldResolverDescriptor[] resolverDescriptors, CompiledTypes compiledTypes) { for (var i = 0; i < resolverDescriptors.Length; i++) { string delegateName = ClassSourceCodeGenerator.GetDelegateName(i); FieldInfo field = compiledTypes.ResolverType.GetField( delegateName, BindingFlags.Static | BindingFlags.Public); yield return(new FieldResolver( resolverDescriptors[i].Field.TypeName, resolverDescriptors[i].Field.FieldName, (FieldResolverDelegate)field.GetValue(field))); } }