Sobes.tech
Junior — Middle

Zijn er beperkingen bij het definiëren van je eigen universele sjabloon (generiek)?

sobes.tech AI

Antwoord van AI

Bij het definiëren van eigen universele sjablonen (generics) in C# zijn er enkele beperkingen:

  • De typeparameters moeten referentie-, waarde- of bepaalde beperkingen (constraints) hebben, bijvoorbeeld erven van een bepaalde klasse, een interface implementeren, een parameterloze constructor hebben.
  • Het is niet mogelijk om primitieve types direct zonder beperkingen te gebruiken als er specifieke functionaliteit vereist is.
  • Het is niet mogelijk om instanties van het type parameter te maken zonder de beperking new(), omdat de compiler niet weet hoe het te initialiseren.
  • Het is niet mogelijk om de operators typeof(T) of is T zonder beperkingen te gebruiken.

Voorbeeld van beperking:

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

Hier moet T de interface IEntity implementeren en een parameterloze constructor hebben.