Обобщённый репозиторий в памяти на C#
В этом уроке вы создадите обобщённый класс репозитория (repository), который может хранить данные любого типа, сохраняя безопасность типов.
Введение
Репозиторий (repository) - промежуточный слой, который отвечает за хранение и получение данных. Если написать его обобщённо, одна реализация подойдёт для многих типов данных, например пользователей, товаров или заказов, без каких-либо приведений типов.
Класс Repository<T> хранит данные в private List<T>. Если создать new Repository<string>(), репозиторий принимает только строки, а попытку добавить другой тип отметит компилятор. Свойство All возвращает IReadOnlyList<T>, который позволяет читать список, но не менять его снаружи.
Пример на C#, который можно запустить
using System;
using System.Collections.Generic;
class Repository<T>
{
private readonly List<T> _items = new();
public void Add(T item) => _items.Add(item);
public IReadOnlyList<T> All => _items;
}
class Program
{
static void Main() { var repo = new Repository<string>(); repo.Add("C#"); Console.WriteLine(repo.All[0]); }
}
C#Практика с отладчиком
Попрактикуйтесь на задаче
Примените материал этого урока к реальной задаче. Каждая задача запускается в браузере, с мгновенными тестами и разбором от ИИ.
Все задачи