TOC

This article has been localized into Dutch by the community.

Reflection:

De juiste Type

De Type class is het fundament van Reflection. Hij dient als runtime informatie over een assembly, een module of een type. Gelukkig is een referentie naar het Type van een object erg eenvoudig, omdat elke class die erft (inherits) van de Object class een GetType() method heeft. Als je informatie nodig hebt over een niet-geinstantieerd type, mag je de globaal(globally) beschikbare typeof() method gebruiken, die daarvoor is. Bekijk de volgende voorbeelden waar we beide benaderingen gebruiken:

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

We gebruiken de GetType() method op onze eigen variabele, en daarna gebruiken we de typeof() op een bekende class, de Int32. Zoals je ziet is het resultaat in beide gevallen een Type object waarvoor we de Fullname property kunnen lezen.

Soms zou je ook alleen de naam kunnen hebben van het type waar je naar zocht. In dat geval moet je een referentie er naar toe krijgen van de juiste assembly. In het volgende voorbeeld krijgen we een referentie naar de uitvoerende assembly, dat wil zeggen, de assembly van waaruit de code wordt uitgevoerd, en daarna tonen we alle type ervan:

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 :)
    }
}

De output zal de naam zijn van de twee gedeclareerde classes, Program en DummyClass, maar in een complexere applicatie is de lijst waarschijnlijk interessanter. In dit geval krijgen we alleen maar de naam van het type, maar uiteraard zouden we meer willen doen met de Type referentie die we krijgen. In de volgende hoofdstukken zal ik je wat meer laten zien van wat we ermee kunnen doen.


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!