using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ProjectElectricLocomotive.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)
{
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());
}
}
// TODO проверка, что name не пустой и нет в словаре записи с таким ключом
// TODO Прописать логику для добавления
}
///
/// Удаление коллекции
///
/// Название коллекции
public void DelCollection(string name)
{
if (_storages.ContainsKey(name))
{
_storages.Remove(name);
}
// TODO Прописать логику для удаления коллекции
}
///
/// Доступ к коллекции
///
/// Название коллекции
///
public ICollectionGenericObjects? this[string name]
{
get
{
if (_storages.ContainsKey(name))
{
return _storages[name];
}
// TODO Продумать логику получения объекта
return null;
}
}
}