Attention: We are retiring the ASP.NET Community Blogs. Learn more >

Reflection

Reflection é um recurso muito poderoso do Framework da Microsoft, porém não é novidade para ninguém. O motivo desse post é ilustrar um uso prático de reflection.

No nosso exemplo, queremos listar em run time todas as propriedades de uma classe como se elas fossem itens de uma coleção.

A classe em questão herda de object e não implementa nenhuma interface que possibilite iteração, nesse caso somente com reflection poderemos listar as propriedades.

Abaixo segue a implementação sugerida:

class Program
{
    static void Main(string[] args)
    {
        Person oPerson = new Person();
        oPerson.iAge = 27;
        oPerson.sName =
"Fernando Vezzali";
        PropertyInfo[] properties = oPerson.GetType().GetProperties();
        foreach (PropertyInfo oPropertyInfo in properties)
        {
            MethodInfo oMethodInfo = oPerson.GetType().GetMethod("get_" + oPropertyInfo.Name);
            ParameterInfo[] ArrParameterInfo = oPerson.GetType().GetMethod("get_" + oPropertyInfo.Name).GetParameters();
            Console.WriteLine(oPropertyInfo.Name + " = " + oMethodInfo.Invoke(oPerson, ArrParameterInfo));
        }
        Console.Read();
    }
}

class Person
{
    private int _iAge;
    private string _sName;

   
public
int iAge
    {
        get { return _iAge; }
        set { _iAge = value; }
    }
    public string sName
    {
        get { return _sName; }
        set { _sName = value; }
    }
}

Solution: ReflectionProject.zip

No Comments