public static void RegisterOptimizer( IDictionary <string, object?> contextData, ISelectionSetOptimizer optimizer) { if (contextData.TryGetValue(_key, out object?value) && value is List <ISelectionSetOptimizer> optimizers && !optimizers.Contains(optimizer)) { optimizers.Add(optimizer); return; } optimizers = new List <ISelectionSetOptimizer> { optimizer }; contextData[_key] = optimizers; }
public static IObjectFieldDescriptor UseOptimizer( this IObjectFieldDescriptor descriptor, ISelectionSetOptimizer optimizer) { if (descriptor is null) { throw new ArgumentNullException(nameof(descriptor)); } if (optimizer is null) { throw new ArgumentNullException(nameof(optimizer)); } descriptor .Extend() .OnBeforeCreate(d => RegisterOptimizer(d.ContextData, optimizer)); return(descriptor); }