TOC

This article has been localized into Portuguese by the community.

Reflection:

Introdução à Reflexão

A Wikipedia diz que "na ciência da computação, a reflexão é o processo pelo qual um programa de computador pode observar e modificar sua própria estrutura e comportamento". É exatamente assim que o Reflection in C # funciona e, embora você não consiga perceber isso neste momento, poder examinar e alterar informações sobre seu aplicativo durante o tempo de execução oferece um enorme potencial. Reflexão, que é um termo geral, bem como o nome real dos recursos de reflexão em C #, funciona muito bem e, na verdade, não é tão difícil de usar. Nos próximos capítulos, aprofundaremos mais sobre como isso funciona e forneceremos alguns exemplos interessantes, que devem mostrar o quão útil é o Reflection.

No entanto, para você começar e esperançosamente interessado, aqui está um pequeno exemplo. Ele resolve uma questão que tenho visto de muitos recém-chegados em qualquer linguagem de programação: Como posso alterar o valor de uma variável durante o tempo de execução, apenas conhecendo seu nome? Dê uma olhada neste pequeno aplicativo de demonstração para uma solução e leia os próximos capítulos para uma explicação das diferentes técnicas usadas.

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

Tente executar o código e veja como funciona. Além das linhas em que usamos o Reflection real, tudo é muito simples. Agora, vá para o próximo capítulo para mais alguma teoria sobre como isso funciona.


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!