Eh bien, d'une part, ArrayList
n'est pas générique ... vouliez-vous dire List<Customer>
?
Vous pouvez utiliser Type.GetType(string)
pour obtenir l'objet Type
associé à un type par son nom. Si l'assembly n'est pas mscorlib ou le type en cours d'exécution, vous devez inclure le nom de l'assembly. De toute façon, vous aurez besoin de l'espace de noms aussi. Etes-vous sûr d'avoir vraiment besoin d'un type générique? Les génériques fournissent principalement la sécurité de type à la compilation, ce qui ne vous sera certainement pas très utile si vous trouvez le type au moment de l'exécution. Vous pouvez trouver utile si ...
Type elementType = Type.GetType("Customer");
Type listType = typeof(List<>).MakeGenericType(new Type[] { elementType });
object list = Activator.CreateInstance(listType);
Si vous devez faire quelque chose avec cette liste, vous pouvez bien besoin de faire une réflexion plus générique mais ... par exemple appeler une méthode générique.
John, il n'y a pas d'implémentation générique de la classe ArrayList dans le framework .NET. Bob, c'est hors de question pour la question, mais si vous programmez en C# 2.0+, vous devriez remplacer ArrayList par quelque chose de générique. – senfo