Mit diesem Beispiel will ich zeigen wie einfach mittels Reflektion eine generische Liste erstellt werden kann.
Reale Verwendung zB wenn bei LINQ to SQL gespeicherte Prozeduren über den Namen - also über Reflektion - ausgeführt werden um das Ergebnis in das ISingleResult<T> zu wandeln.
using System;
using System.Collections.Generic;
namespace Reflection_and_Generics
{
class Program
{
static void Main(string[] args)
{
// Basistyp ermitteln:
Type baseType = typeof(List<>);
// Typargumente erstellen:
Type[] typeArgs = { typeof(string) };
// Generischen Typ erstellen:
Type genericType = baseType.MakeGenericType(typeArgs);
// Objekt erstellen:
object o = Activator.CreateInstance(genericType);
List<string> list = o as List<string>;
Console.WriteLine(list == null ? "Fehler" : "Erfolg");
Console.ReadKey();
}
}
}
2 Kommentare zum Snippet