namespace ProjectCruiser.CollectionGenericObj; public class StorageCollection where T : class { // Словарь (хранилище) с коллекциями < name, type (class) > readonly Dictionary> _storages; // Возвращение списка названий коллекций public List Keys => _storages.Keys.ToList(); public StorageCollection() { _storages = new Dictionary>(); } /// Добавление коллекции в хранилище /// Название коллекции /// тип коллекции public void AddCollection(string name, CollectionType collType) { if (name == null || _storages.ContainsKey(name) || collType == CollectionType.None) { return; } switch (collType) { case CollectionType.List: _storages.Add(name, new ListGenObj()); break; // _storages[name] = new ListGenericObjects(); break; [*] case CollectionType.Array: _storages.Add(name, new ArrayGenObj()); break; } } /// Удаление коллекции ( по ключу-строке - её имени ) /// Название коллекции public void DelCollection(string name) { if (_storages.ContainsKey(name)) _storages.Remove(name); return; } /// Доступ к коллекции ( по ключу-строке - её имени ) public ICollectionGenObj? this[string name] { get => _storages.ContainsKey(name) ? _storages[name] : null; /* ^^^ { if (_storages.ContainsKey(name)) return _storages[name]; return null; } */ } }