Sobes.tech
Junior — Middle

Gibt es Einschränkungen bei der Definition eines eigenen universellen Templates (generisch)?

sobes.tech KI

Antwort von AI

Beim Definieren eigener universeller Vorlagen (Generics) in C# gibt es einige Einschränkungen:

  • Die Parametertypen müssen Referenz-, Wert- oder bestimmte Einschränkungen (Constraints) haben, z.B. Vererbung von einer bestimmten Klasse, Implementierung einer Schnittstelle, Vorhandensein eines parameterlosen Konstruktors.
  • Es ist nicht möglich, primitive Typen direkt ohne Einschränkungen zu verwenden, wenn spezifische Funktionalität erforderlich ist.
  • Es ist nicht möglich, Instanzen des Parameters ohne die Einschränkung new() zu erstellen, da der Compiler nicht weiß, wie er initialisiert werden soll.
  • Es ist nicht möglich, die Operatoren typeof(T) oder is T ohne Einschränkungen zu verwenden.

Beispiel für eine Einschränkung:

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

Hier muss T die Schnittstelle IEntity implementieren und einen parameterlosen Konstruktor haben.