Fernando Vezzali - Microsoft Certified Professional Developer

August 2008 - Posts

Colocando um break point aonde ainda não se tem código

Durante o dia-a-dia de trabalho eu me deparo com algumas situações inusitadas, durante esta semana estive acompanhando um colega enquanto ele debugava um código tentando solucionar um bug e sugeri que ele colocasse um break point dentro de um if, para testarmos se a execução do programa passaria por ali. Porém dentro desse if ainda não havia nada codificado. Sem titubear ele declarou uma variável string a = "teste"; e colocou o break point nela.

Opa! Existe um maneira mais elegante de colocar um break point aonde ainda não existe código:

System.Diagnostics.Debugger.Break();

Bonito né ?

 

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

Windows Vista, Visual Studio 2008 e IIS 7.0

Certamente muitos desenvolvedores já estão com o tão esperado Windows Vista e consequentemente com o IIS 7.0 e o Visual Studio 2008.

Tão certo também são os problemas que todos estão encontrando para criar e/ou abrir projetos web existentes. Para começar são necessários alguns ajustes no IIS Logo depois o VS precisa de mais privilégios. E por aí vai.

No blog do meu colega Marcos Dell Antonio existe um post bastante esclarecedor:

http://www.marcosdellantonio.net/2008/08/10/visual-studio-2008-e-iis-70/

Abraço.

Posted: Aug 26 2008, 11:47 AM by ferps | with 1 comment(s)
Filed under: , , ,
More Posts