Utiliser les contraintes new()
en C# pour transmettre des paramètres aux constructeurs génériques
Lorsque vous ajoutez des éléments à une liste, en essayant de créer un nouvel objet de type T avec des paramètres de constructeur, vous pouvez rencontrer une erreur de compilation indiquant que les paramètres ne peuvent pas être fournis lors de la création d'une instance de variable. Cette erreur se produit même s'il existe des paramètres de constructeur dans la classe.
Pour résoudre ce problème, new()
des contraintes de types génériques doivent être utilisées. Bien que cette contrainte permette la création d'instances sans paramètres, elle n'est pas suffisante dans le cas où les paramètres du constructeur sont inclus.
L'alternative est d'introduire un paramètre pour que l'objet soit créé en fonction du paramètre. Les fonctions peuvent accomplir cela efficacement.
<code class="language-csharp">public static string GetAllItems<T>(..., Func<ListItem, T> del) { ... List<T> tabListItems = new List<T>(); foreach (ListItem listItem in listCollection) { tabListItems.Add(del(listItem)); } ... }</code>
Cette fonction peut être appelée à l'aide d'une expression lambda qui crée un nouvel objet avec les paramètres requis :
<code class="language-csharp">GetAllItems<Foo>(..., l => new Foo(l));</code>
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!