Middle
Peut-on limiter les types que l'utilisateur transmettra via un modèle en C#?
sobes.tech IA
Réponse de l'IA
Oui, en utilisant des contraintes de types génériques (generic constraints).
public class MyGenericClass<T> where T : IMyInterface // T doit implémenter IMyInterface
{
// ...
}
public class AnotherGenericClass<T> where T : class // T doit être un type de référence
{
// ...
}
public class YetAnotherGenericClass<T> where T : struct // T doit être un type valeur
{
// ...
}
public class CombinedConstraints<T> where T : MyBaseClass, new(), IDisposable // Contraintes combinées
{
// ...
}
Types de contraintes :
where T : struct: Le type doit être un type valeur (non nullable).where T : class: Le type doit être un type de référence.where T : new(): Le type doit avoir un constructeur public sans paramètres. Cette contrainte ne peut pas être utilisée avecstructetclassen même temps.where T : BaseClass: Le type doit hériter deBaseClassou êtreBaseClasslui-même.where T : IInterface: Le type doit implémenter l'interfaceIInterface.where T : U: Le typeTdoit être ou hériter du typeU, oùUest un autre paramètre de type.
Il est possible de combiner plusieurs contraintes en les séparant par des virgules. Les contraintes sur la classe de base ou l'interface doivent être indiquées en premier.