Feedback

Reflektion und Generika

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();
		}
	}
}

2 Kommentare

  1. 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.