private static TypeInitializer CreateTypeInitializer( SchemaBuilder builder, IDescriptorContext context, IBindingLookup bindingLookup, IReadOnlyList <ITypeReference> typeReferences, TypeRegistry typeRegistry) { Dictionary <OperationType, ITypeReference> operations = builder._operations.ToDictionary(t => t.Key, t => t.Value(context.TypeInspector)); var interceptor = new AggregateTypeInitializationInterceptor( CreateInterceptors(builder, context.Services)); var initializer = new TypeInitializer( context, typeRegistry, typeReferences, builder._resolverTypes, interceptor, builder._isOfType, type => IsQueryType(context.TypeInspector, type, operations)); foreach (FieldMiddleware component in builder._globalComponents) { initializer.GlobalComponents.Add(component); } foreach (FieldReference reference in builder._resolvers.Keys) { initializer.Resolvers[reference] = new RegisteredResolver( typeof(object), builder._resolvers[reference]); } foreach (RegisteredResolver resolver in bindingLookup.Bindings.SelectMany(t => t.CreateResolvers())) { var reference = new FieldReference( resolver.Field.TypeName, resolver.Field.FieldName); initializer.Resolvers[reference] = resolver; } foreach (KeyValuePair <Type, (CreateRef, CreateRef)> binding in builder._clrTypes) { typeRegistry.TryRegister( (ExtendedTypeReference)binding.Value.Item1(context.TypeInspector), binding.Value.Item2.Invoke(context.TypeInspector)); } return(initializer); }
private TypeInitializer CreateTypeInitializer( IServiceProvider services, IDescriptorContext descriptorContext, IBindingLookup bindingLookup, IEnumerable <ITypeReference> types) { var interceptor = new AggregateTypeInitializationInterceptor( CreateInterceptors(services)); var initializer = new TypeInitializer( services, descriptorContext, _contextData, types, _resolverTypes, interceptor, _isOfType, IsQueryType); foreach (FieldMiddleware component in _globalComponents) { initializer.GlobalComponents.Add(component); } foreach (FieldReference reference in _resolvers.Keys) { initializer.Resolvers[reference] = new RegisteredResolver( typeof(object), _resolvers[reference]); } foreach (RegisteredResolver resolver in bindingLookup.Bindings .SelectMany(t => t.CreateResolvers())) { var reference = new FieldReference( resolver.Field.TypeName, resolver.Field.FieldName); initializer.Resolvers[reference] = resolver; } foreach (KeyValuePair <IClrTypeReference, ITypeReference> binding in _clrTypes) { initializer.ClrTypes[binding.Key] = binding.Value; } return(initializer); }