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 é 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
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.