Sprache: C#
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();
}
}
}
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();
}
}
}
Alte URL:
/snippet/reflektion-und-generika/1016
Hallo Foidl,
danke für Beispiel aber ich bin anf’nger in C# comunity und ich verstehe nicht wie kann man eine Liste oder besser IList mit beliebige Typ Instanzirren? In dein Beispiel es geht um List oder? Wie kann man eine IList Liste generieren ?
Danke!
ZM.
Hallo,. Da List die Schnittstellte IList implementiert wurde so eine Liste und mit dem gleichen Objekt eine IList erzeugt. Solltest du das nicht verstehen dann sieh dir obigen Link an – da werden diese Grundlagen sehr gut erklärt.
siehe http://openbook.galileocomputing.de/visual_csharp/.
Im Beispiel gehts um die generische Variante einer Liste nämlich um List