Junior — Middle
Vannak korlátozások saját univerzális sablon (generikus) meghatározásakor?
sobes.tech MI
Válasz az MI-től
Amikor saját általános sablonokat (generics) definiálunk C#-ban, bizonyos korlátozások vannak:
- A paramétertípusok referencia-, értéktípusok vagy bizonyos korlátozások (constraints) lehetnek, például egy adott osztályból való öröklés, egy interfész megvalósítása, paraméter nélküli konstruktor megléte.
- Nem lehet primitív típusokat közvetlenül korlátozások nélkül használni, ha speciális funkcionalitás szükséges.
- Nem lehet példányokat létrehozni a típus paraméteréből a new() korlátozás nélkül, mivel a fordító nem tudja, hogyan inicializálja.
- Nem lehet használni a typeof(T) vagy is T operátorokat korlátozások nélkül.
Korlátozás példája:
public class Repository<T> where T : IEntity, new()
{
public T CreateNew() => new T();
}
Itt T-nek meg kell valósítania az IEntity interfészt és rendelkeznie kell paraméter nélküli konstruktorral.