Objet de l'initialiseur
Si votre constructeur avec le paramètre n'est pas rien faire, en plus de la définition d'une propriété, vous pouvez le faire en C# 3 ou mieux, à l'aide d'un initialiseur d'objet plutôt que d'appeler un constructeur (ce qui est impossible, comme il a été mentionné):
public static string GetAllItems<T>(...) where T : new()
{
...
List<T> tabListItems = new List<T>();
foreach (ListItem listItem in listCollection)
{
tabListItems.Add(new T() { YourPropertyName = listItem } ); // Now using object initializer
}
...
}
En utilisant cela, vous pouvez toujours mettre toute logique constructeur par défaut (vide) constructeur, trop.
Activateur.CreateInstance()
Alternativement, vous pouvez appeler l'Activateur.CreateInstance() comme ceci:
public static string GetAllItems<T>(...) where T : new()
{
...
List<T> tabListItems = new List<T>();
foreach (ListItem listItem in listCollection)
{
object[] args = new object[] { listItem };
tabListItems.Add((T)Activator.CreateInstance(typeof(T), args)); // Now using Activator.CreateInstance
}
...
}
Notez que l'Activateur.CreateInstance peut avoir une certaine surcharge de performance que vous voudrez peut-être éviter si la vitesse d'exécution est une priorité absolue et une autre option est facile à gérer pour vous.