public static void RegisterOptimizer(
            IDictionary <string, object?> contextData,
            ISelectionOptimizer optimizer)
        {
            if (contextData.TryGetValue(_key, out object?value) &&
                value is List <ISelectionOptimizer> optimizers &&
                !optimizers.Contains(optimizer))
            {
                optimizers.Add(optimizer);
                return;
            }

            optimizers = new List <ISelectionOptimizer> {
                optimizer
            };
            contextData[_key] = optimizers;
        }
Esempio n. 2
0
    public static IObjectFieldDescriptor UseOptimizer(
        this IObjectFieldDescriptor descriptor,
        ISelectionOptimizer 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);
    }