public GestoreInformazioni Modifica(GestoreInformazioni OldGestore, Dictionary<Type, Type> typeProviders)
        {
            _gestori[OldGestore]--;
            if(_gestori[OldGestore]<1)
            {
                _gestori.Remove(OldGestore);
            }

            return GetGestore(typeProviders);
        }
        public GestoreInformazioni Modifica(GestoreInformazioni OldGestore, Dictionary <Type, Type> typeProviders)
        {
            _gestori[OldGestore]--;
            if (_gestori[OldGestore] < 1)
            {
                _gestori.Remove(OldGestore);
            }

            return(GetGestore(typeProviders));
        }
        public GestoreInformazioni GetGestore(Dictionary<Type,Type> typeProviders)
        {
            foreach (GestoreInformazioni gest in _gestori.Keys)
            {
                if (gest.IsGestoreOf(typeProviders))
                {
                    _gestori[gest]++;
                    return gest;
                }
            }

            GestoreInformazioni gestore = new GestoreInformazioni(typeProviders);
            _gestori.Add(gestore,1);

            return gestore;
        }
        public GestoreInformazioni GetGestore(Dictionary <Type, Type> typeProviders)
        {
            foreach (GestoreInformazioni gest in _gestori.Keys)
            {
                if (gest.IsGestoreOf(typeProviders))
                {
                    _gestori[gest]++;
                    return(gest);
                }
            }

            GestoreInformazioni gestore = new GestoreInformazioni(typeProviders);

            _gestori.Add(gestore, 1);

            return(gestore);
        }