new()
paramètres du constructeurQuestion :
Une erreur de compilation se produit lors de la tentative de création d'un nouvel objet de type T avec un argument constructeur dans une méthode générique utilisant la contrainte new()
. Le message d'erreur indique que le paramètre ne peut pas être fourni lors de l'initialisation de l'objet.
public static string GetAllItems<T>(...) where T : new() { List<T> tabListItems = new List<T>(); foreach (ListItem listItem in listCollection) { tabListItems.Add(new T(listItem)); // 此处出错。 } ... }
Solution :
Pour créer un objet de type générique à l'aide d'arguments du constructeur, il ne suffit pas d'utiliser simplement la contrainte new
. Une fonction personnalisée doit être introduite pour gérer l'initialisation avec les paramètres nécessaires. Voici comment procéder :
public static string GetAllItems<T>(..., Func<ListItem, T> del) { ... List<T> tabListItems = new List<T>(); foreach (ListItem listItem in listCollection) { tabListItems.Add(del(listItem)); // 使用函数创建对象。 } ... }
En utilisant une fonction personnalisée, vous pouvez appeler une méthode générique, spécifier le type et fournir une fonction d'initialisation comme suit :
GetAllItems<Foo>(..., l => new Foo(l));
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!