TOC

This article has been localized into German by the community.

Reflektion:

Einleitung

In Wikipedia steht: "In der Informatik ist Reflection der Prozess, bei dem ein Computerprogramm seine eigene Struktur und sein Verhalten erkennen und modifizieren kann". So funktioniert genau Reflection in C#, und obwohl du es zu dem Zeitpunkt noch nicht realisierst, wie es ist, Informationen deiner Applikation während der Laufzeit untersuchen und verändern zu können, birgt es ein enormes Potential. Reflection, welches sowohl der allgemeine Fachbegriff als auch der richtige Ausdruck für die Introspektionsmöglichkeiten in C# ist, ist tatsächlich sehr praktisch, und es ist wirklich nicht schwer zu anzuwenden. In den nächsten paar Kapiteln werden wir mehr in die Tiefe gehen, wie es funktioniert und wir werden dir anhand ein paar cooler Beispiele zeigen, wie nützlich Reflection tatsächlich ist.

Als Einstiegspunkt und um dein Interesse hoffentlich zu wecken, haben wir hier ein kleines Beispiel für dich. Es beantwortet eine Frage, die mir mehrere Programmierneulige zu egal welcher Programmiersprache gestellt haben: Wie kann ich den Werte einer Variable während der Laufzeit verändern, wenn ich nur den Variablennamen weiß? Schau dir diese kleine Demo Applikation eines Lösungsansatzes an, und lies dir die nächsten Kapitel, in denen die unterschiedlichen verwendeten Techniken erklärt werden, durch.

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

Probier es aus den Code zu kompilieren und untersuche, wie er funktioniert. Außer den Zeilen, wo wir wirklich Reflexion verwenden, ist es sehr einfach geschriebener Code. Nun gehe zum nächsten Kapitel über, um mehr Theorie darüber zu erfahren, wie das tatsächlich funktioniert.


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!