public override void OnBeforeRegisterDependencies( ITypeDiscoveryContext discoveryContext, DefinitionBase?definition, IDictionary <string, object?> contextData) { if (definition is FilterInputTypeDefinition def) { IFilterConvention convention = GetConvention( discoveryContext.DescriptorContext, def.Scope); var descriptor = FilterInputTypeDescriptor.From( discoveryContext.DescriptorContext, def, def.Scope); var typeReference = TypeReference.Create( discoveryContext.Type, def.Scope); convention.ApplyConfigurations(typeReference, descriptor); foreach (InputFieldDefinition field in def.Fields) { if (field is FilterFieldDefinition filterFieldDefinition) { if (discoveryContext.TryPredictTypeKind( filterFieldDefinition.Type, out TypeKind kind) && kind != TypeKind.Scalar && kind != TypeKind.Enum) { field.Type = field.Type.With(scope: discoveryContext.Scope); } if (filterFieldDefinition.Handler is null) { if (convention.TryGetHandler( discoveryContext, def, filterFieldDefinition, out IFilterFieldHandler? handler)) { filterFieldDefinition.Handler = handler; } else { throw ThrowHelper.FilterInterceptor_NoHandlerFoundForField( def, filterFieldDefinition); } } } } } }
private void ConfigureSortInputType( ITypeDiscoveryContext discoveryContext, SortInputTypeDefinition definition) { ISortConvention convention = GetConvention( discoveryContext.DescriptorContext, definition.Scope); var descriptor = SortInputTypeDescriptor.From( discoveryContext.DescriptorContext, definition, definition.Scope); SchemaTypeReference typeReference = TypeReference.Create( discoveryContext.Type, definition.Scope); convention.ApplyConfigurations(typeReference, descriptor); foreach (InputFieldDefinition field in definition.Fields) { if (field is SortFieldDefinition sortFieldDefinition) { if (discoveryContext.TryPredictTypeKind( sortFieldDefinition.Type, out TypeKind kind) && kind != TypeKind.Enum) { field.Type = field.Type.With(scope: discoveryContext.Scope); } if (convention.TryGetFieldHandler( discoveryContext, definition, sortFieldDefinition, out ISortFieldHandler? handler)) { sortFieldDefinition.Handler = handler; } else { throw ThrowHelper.SortInterceptor_NoFieldHandlerFoundForField( definition, sortFieldDefinition); } } } }