14/02/2008

La reflexion .Net comme debugger

Faire un dump du contenu d'une classe est souvent très utile, même si le debugger permet d'explorer le contenu d'une classe pendant le debug d'une application.
Le petit exemple de code ci-dessous utilise l’introspection pour faire le 'Dump' d’un objet de la classe Contact. Le dump est codé pour afficher le nom et la valeur de chacune des propriétés de la classe.
Les valeurs sont affichées dans un contrôle ASP.Net 'Table'.
Ce code est biensûr utilisable dans d'autres contextes que celui d'une page ASP.NET.

protected void Page_Load(object sender, EventArgs e)
{
Contact contact = new Contact("BERTON","Fred","berton@gmail.com");
Dump(contact,this.Table1);
}

private void Dump(Object obj,Table table)
{
// On recupere le type de l'objet
Type typeObject = obj.GetType();

// On parcours la collection des proprietes de l'objet
foreach (PropertyInfo pi in typeObject.GetProperties())
{
TableRow row = new TableRow();
TableCell cellName = new TableCell();
TableCell cellValue = new TableCell();

// ici on obtient le nom de la propriete
cellName.Text = pi.Name.ToString();

// ici on obtient maintenant la valeur de la propriete
object propValue = pi.GetValue(obj, null);
cellValue.Text = propValue.ToString();

row.Cells.Add(cellName);
row.Cells.Add(cellValue);
table.Rows.Add(row);
}
}

Aucun commentaire: