using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace lab1.CollectionGenericObjects;
///
/// Класс-хранилище коллекций
///
///
public class StorageCollection
where T : class
{
///
/// Словарь(хранилище) с коллекциями
///
readonly Dictionary> _storages;
///
/// Возвращение списка названий коллекций
///
public List Keys => _storages.Keys.ToList();
///
/// Конструктор
///
public StorageCollection()
{
_storages = new Dictionary>();
}
///
/// Добавление коллекции в хранилище
///
/// Название коллекции
/// Тип коллекции
public void AddCollection(string name, CollectionType collectionType)
{
// TODO проверка, что name не пустой и нет в словаре записи с таким ключом
// TODO Прописать логику для добавления
if (!(collectionType == CollectionType.None) && !_storages.ContainsKey(name))
{
if (collectionType == CollectionType.List)
{
_storages.Add(name, new ListGenericObjects());
}
else if (collectionType == CollectionType.Massive)
{
_storages.Add(name, new MassiveGenericObjects());
}
}
}
///
/// Удаление коллекции
///
/// Название коллекции
public void DelCollection(string name)
{
// TODO Прописать логику для удаления коллекции
if (_storages.ContainsKey(name))
{
_storages.Remove(name);
}
}
///
/// Доступ к коллекции
///
///
///
public ICollectionGenericObjects? this[string name]
{
get
{
// TODO Продумать логику получения объекта
if (_storages.ContainsKey(name))
return _storages[name];
return null;
}
}
}