TOC

This article has been localized into Dutch by the community.

Reflection:

Reflection inleiding

Wikipedia zegt dat "In de computerwetenschap is 'reflectie' het proces waarbij een computerprogramma zijn eigen structuur en gedrag kan observeren en wijzigen". Dit is precies hoe Reflection in C# werkt, en terwijl je je dit hier nog niet zal realiseren, biedt het in staat zijn om informatie over je applicatie gedurende runtime te onderzoeken en te veranderen een gigantisch potentieel. Reflection, dat zowel een algemene term is als ook de actuele naam van de reflection mogelijkheden van C#, werkt erg erg goed, en is in feite niet moeilijk te gebruiken. In de volgende paar hoofdstukken gaan we dieper in op hoe het werkt en geven we een paar mooie voorbeelden die laten zien hoe nuttig Reflection is.

Maar om jouw in beweging te zetten en ervoor te interesseren, is hier een klein voorbeeld. Het lost een vraag op die ik heb gezien bij vele nieuwkomers bij elke programmeertaal: Hoe kan ik nu de waarde van een variabele gedurende runtime veranderen door alleen maar de naam ervan te weten? Kijk naar deze kleine demo applicatie voor een oplossing, en lees de volgende hoofdstukken voor uitleg over de verschillende technieken die worden gebruikt

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

namespace ReflectionTest
{
    class Program
    {
        private static int a = 5, b = 10, c = 20;

        static void Main(string[] args)
        {
            Console.WriteLine("a + b + c = " + (a + b + c));
            Console.WriteLine("Please enter the name of the variable that you wish to change:");
            string varName = Console.ReadLine();
            Type t = typeof(Program);
            FieldInfo fieldInfo = t.GetField(varName, BindingFlags.NonPublic | BindingFlags.Static);
            if(fieldInfo != null)
            {
                Console.WriteLine("The current value of " + fieldInfo.Name + " is " + fieldInfo.GetValue(null) + ". You may enter a new value now:");
                string newValue = Console.ReadLine();
                int newInt;
                if(int.TryParse(newValue, out newInt))
                {
                    fieldInfo.SetValue(null, newInt);
                    Console.WriteLine("a + b + c = " + (a + b + c));
                }
                Console.ReadKey();
            }
        }
    }
}

Probeer de code te 'runnen' en zie hoe het werkt. Afgezien van de regels waar we Reflection gebruiken, is alles erg eenvoudig. ga nu naar het volgende hoofdstuk voor wat meer theorie over hoe het werkt.


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!