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.