csharp / intermediate
Snippet
Einschränkung generischer Typen durch spezifische Constraints
Generische Constraints ermöglichen es Ihnen, einzuschränken, welche Typen als Argumente für eine generische Klasse oder Methode verwendet werden können. Dies stellt sicher, dass der Typ über bestimmte Fähigkeiten verfügt, wie z. B. ein Referenztyp zu sein, einen parameterlosen Konstruktor zu haben oder ein bestimmtes Interface zu implementieren.
snippet.cs
csharp
1
2
3
4
5
6
7
8
9
10
11
12
13
public class Repository<T> where T : class, new(){public T CreateDefault(){// Valid because of 'new()' constraintreturn new T();}public void Reset(T entity) where T : IDisposable{entity.Dispose();}}
Erklärung
1
where T : class, new()
Stellt sicher, dass T ein Referenztyp sein muss und einen öffentlichen parameterlosen Konstruktor hat.
2
where T : IDisposable
Wendet ein Constraint auf eine bestimmte Methode an, die erfordert, dass T IDisposable implementiert.