Sobes.tech
Junior — Middle

Existujú obmedzenia pri určovaní vlastného univerzálneho šablónu (generického)?

sobes.tech AI

Odpoveď od AI

Pri definovaní vlastných univerzálnych šablón (generics) v C# existujú určité obmedzenia:

  • Typy parametrov musia byť referenčné, hodnotové alebo mať určité obmedzenia (constraints), napríklad dediť od určitej triedy, implementovať rozhranie, mať konštruktor bez parametra.
  • Nie je možné priamo používať primitívne typy bez obmedzení, ak je požadovaná špecifická funkcionalita.
  • Nie je možné vytvárať inštancie typu parametra bez obmedzenia new(), pretože kompilátor nevie, ako ho inicializovať.
  • Nie je možné používať operátory typeof(T) alebo is T bez obmedzení.

Príklad obmedzenia:

public class Repository<T> where T : IEntity, new()
{
    public T CreateNew() => new T();
}

Tu T musí implementovať rozhranie IEntity a mať konštruktor bez parametra.