TOC

This article has been localized into German by the community.

Reflektion:

Der korrekte Type

Die Typklasse ist die Grundlage von Reflection. Sie dient als Laufzeitinformation zu einer Baugruppe, einem Modul oder einem Typ. Zum Glück ist es sehr einfach, einen Verweis auf den Typ eines Objekts zu erhalten, da jede Klasse, die von der Object-Klasse erbt, über eine GetType()-Methode verfügt. Wenn Sie Informationen zu einem nicht-instantiierten Typ benötigen, können Sie die global verfügbare typeof()-Methode verwenden, die genau dies tut. Betrachten Sie die folgenden Beispiele, bei denen wir beide Ansätze verwenden:

using System;
using System.Collections.Generic;
using System.Text;
using System.Reflection;

namespace ReflectionTest
{
    class Program
    {
        static void Main(string[] args)
        {
            string test = "test";
            Console.WriteLine(test.GetType().FullName);
            Console.WriteLine(typeof(Int32).FullName);
            Console.ReadKey();
        }
    }
}

Wir verwenden die GetType()-Methode für unsere eigene Variable und dann den typeof() für eine bekannte Klasse, die Int32. Wie Sie sehen, ist das Ergebnis in beiden Fällen ein Type-Objekt, für das wir die FullName-Eigenschaft lesen können.

Zu einem bestimmten Zeitpunkt haben Sie möglicherweise sogar nur den Namen des gesuchten Typs. In diesem Fall müssen Sie von der richtigen Baugruppe einen Verweis darauf erhalten. Im nächsten Beispiel erhalten wir eine Referenz auf die ausführende Assembly, das heißt auf die Assembly, von der aus der aktuelle Code ausgeführt wird, und dann werden alle Typen aufgelistet:

using System;
using System.Collections.Generic;
using System.Text;
using System.Reflection;

namespace ReflectionTest
{
    class Program
    {
        static void Main(string[] args)
        {
            Assembly assembly = Assembly.GetExecutingAssembly();
            Type[] assemblyTypes = assembly.GetTypes();
            foreach(Type t in assemblyTypes)
                Console.WriteLine(t.Name);
            Console.ReadKey();
        }
    }

    class DummyClass
    {
        //Just here to make the output a tad less boring :)
    }
}

Die Ausgabe ist der Name der beiden deklarierten Klassen Program und DummyClass. In einer komplexeren Anwendung wäre die Liste jedoch wahrscheinlich interessanter. In diesem Fall erhalten wir nur den Namen des Typs, aber mit der Typreferenz, die wir erhalten, können wir natürlich noch viel mehr. In den nächsten Kapiteln werde ich Ihnen ein wenig zeigen, was wir damit machen können.


This article has been fully translated into the following languages: Is your preferred language not on the list? Click here to help us translate this article into your language!