This article has been localized into Portuguese by the community.
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.