public static void Remove(AbstractCustomizableParameter parameter, bool useDispose = default)
        {
            if (useDispose && _cache[parameter.GetType()][parameter.Id] is IDisposable disposable)
            {
                disposable.Dispose();
            }

            _cache[parameter.GetType()].Remove(parameter.Id);
        }
 public static void Add(AbstractCustomizableParameter parameter, object customizableObject)
 {
     if (!_cache.TryGetValue(parameter.GetType(), out var dictionary))
     {
         dictionary = new SortedDictionary <Guid, object>();
         _cache.Add(parameter.GetType(), dictionary);
     }
     dictionary.Add(parameter.Id, customizableObject);
 }
 public static bool TryGetValue(AbstractCustomizableParameter parameter, out object?customizableObject)
 {
     customizableObject = null;
     return(_cache.TryGetValue(parameter.GetType(), out var dictionary) && dictionary.TryGetValue(parameter.Id, out customizableObject));
 }
 public static bool ContainsKey(AbstractCustomizableParameter parameter) => _cache[parameter.GetType()].ContainsKey(parameter.Id);