Un repositorio genérico en memoria con C#
En esta lección vas a construir una clase de repositorio (repository) genérica capaz de guardar cualquier tipo de datos sin perder la seguridad de tipos.
Introducción
Un repositorio (repository) es la capa intermedia que se encarga de guardar y recuperar los datos. Si lo escribes de forma genérica, una sola implementación sirve para muchos tipos de datos, como usuarios, productos o pedidos, sin ninguna conversión de tipo.
La clase Repository<T> guarda los datos en una List<T> private. Cuando creas new Repository<string>(), el repositorio solo acepta cadenas, y el compilador avisa si intentas añadir otro tipo. La propiedad All devuelve una IReadOnlyList<T>, que permite leer la lista pero no modificarla desde fuera.
Ejemplo de C# ejecutable
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#Practica con el depurador
Practica con un reto
Usa lo que cubre esta lección para resolver un problema real. Cada reto se ejecuta en el navegador, con pruebas al instante y una revisión de IA.
Todos los retos