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.