protected override void OnComplete( IConventionContext context, FilterProviderDefinition definition) { if (definition.Handlers.Count == 0) { throw FilterProvider_NoHandlersConfigured(this); } IServiceProvider services = new DictionaryServiceProvider( (typeof(IFilterProvider), this), (typeof(IConventionContext), context), (typeof(IDescriptorContext), context.DescriptorContext), (typeof(ITypeInspector), context.DescriptorContext.TypeInspector)) .Include(context.Services); foreach ((Type Type, IFilterFieldHandler? Instance)handler in definition.Handlers) { switch (handler.Instance) { case null when services.TryGetOrCreateService( handler.Type, out IFilterFieldHandler <TContext>?service): _fieldHandlers.Add(service); break; case null: context.ReportError( FilterProvider_UnableToCreateFieldHandler(this, handler.Type)); break; case IFilterFieldHandler <TContext> casted: _fieldHandlers.Add(casted); break; } } }