martedì 26 luglio 2011

ToString() per Entity

Un problema ricorrente e il dover pubblicare per una data classe, il contenuto di tutte le proprietà.

Ne ho provate davvero tante, ma nessuna mi ha mai dato quel valore aggiunto che cercavo.

L'ultimo tentativo è sicuramente quello che meglio calza, e meglio s'addice al mio contesto.

/// <summary>
/// Ovveride del metodo To string
/// </summary>
/// <returns>contenuto dell'entità</returns>
public override string ToString()
{
Type c = this.GetType();

System.Reflection.PropertyInfo[] _p = c.GetProperties();

string output = c.Name.Replace("_", " ") + ":";

for (int i = 0; i < _p.Length; i++)
{
output += _p[i].GetValue(this, null).ToString() + "|";
}

return output.TrimEnd(new char[] { '|' });
}


In questo esempio grazie a reflection riesco a recuperare tutte le proprietà dell'entità, non solo mi recupero anche il nome.

Ciclo quindi per ogni proprietà senza troppo occuparmi dell'ordine in cui appariranno, e le dispongo come valore di ritorno nel ToString().

Una variante interessante potrebbe essere nella riga in cui compongo l'output
con l'aggiunta del nome della proprietà che sto leggendo...


output += _p[i].Name +":"+_p[i].GetValue(this, null).ToString() + "|";

Nessun commento: