using AntiAircraftGun.CollectionGenereticObject;
namespace AntiAircraftGun.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 (_storages.ContainsKey(name)) return;
if (collectionType == CollectionType.None) return;
else if (collectionType == CollectionType.Massive)
_storages[name] = new MassiveGenericObjects();
else if (collectionType == CollectionType.List)
_storages[name] = new ListGenericObjects();
}
///
/// Удаление коллекции
///
/// Название коллекции
public void DelCollection(string name)
{
if (_storages.ContainsKey(name))
_storages.Remove(name);
}
///
/// Доступ к коллекции
///
/// Название коллекции
///
public ICollectionGenericObjects? this[string name]
{
get
{
if (_storages.ContainsKey(name))
return _storages[name];
return null;
}
}
}