Feedback

C# - Reflektion und Generika

Veröffentlicht von am 20.11.2008
(2 Bewertungen)
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.
GFU-Schulungen  [Anzeige]

C# Komplett

Sie kennen sich in objektorientierter Programmierung aus. Sie schreiben C++ oder Java? Und nun stehen Sie vor der Aufgabe, in C# Anwendungen zu erstellen. Das C# Komplett-Seminar verschafft Ihnen umfassende Programmierkenntnisse in dieser Sprache. Nach der Schulung entwickeln Sie selbständig Anwendungen mit C#. Sie kennen die Datentypen und Klassenbibliotheken der objektorientierten Programmiersprache C#. Der Komplettkurs setzt bei den Grundlagen von C# ein. Sie arbeiten mit Variablen und konvertieren Typen. Multithreading, Delegates, Generics sind nach dem Seminar für Sie kein Geheimnis mehr.

ASP.NET 2.0 und 3.5

Dieser Kurs vermittelt Ihnen alle Erweiterungen von Microsoft ASP.NET 2.0. Zu diesen zählen u. a. Data Bindung, Master Pages, und Security.

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();
		}
	}
}
Abgelegt unter Reflektion, Generika, Reflection, Generics.

2 Kommentare zum Snippet

zoran schrieb am 25.08.2009:
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<string> oder? Wie kann man eine IList<MyClass> Liste generieren ?

Danke!
ZM.
Günther Foidl schrieb am 28.08.2009:
Hallo,
siehe http://openbook.galileocomputing.de/visual_csharp/.
Im Beispiel gehts um die generische Variante einer Liste nämlich um List<string>. Da List<T> die Schnittstellte IList<T> implementiert wurde so eine Liste und mit dem gleichen Objekt eine IList<T> erzeugt. Solltest du das nicht verstehen dann sieh dir obigen Link an - da werden diese Grundlagen sehr gut erklärt.
 

Logge dich ein, um hier zu kommentieren!