Dynamisches überschreiben von ToString() mit der Spiegelung

Ich in der Regel überschreiben Sie die ToString () - Methode, um die Ausgabe der Namen der Eigenschaft und die Werte zu Ihnen. Ich habe ein wenig müde zu schreiben, diese mit der hand so ich bin auf der Suche nach einer dynamischen Lösung.

Main:

TestingClass tc = new TestingClass()
{
    Prop1 = "blah1",
    Prop2 = "blah2"
};
Console.WriteLine(tc.ToString());
Console.ReadLine();

TestingClass:

public class TestingClass
{
    public string Prop1 { get; set; }//properties
    public string Prop2 { get; set; }
    public void Method1(string a) { }//method
    public TestingClass() { }//const
    public override string ToString()
    {
        StringBuilder sb = new StringBuilder();
        foreach (Type type in System.Reflection.Assembly.GetExecutingAssembly().GetTypes())
        {
            foreach (System.Reflection.PropertyInfo property in type.GetProperties())
            {
                sb.Append(property.Name);
                sb.Append(": ");
                sb.Append(this.GetType().GetProperty(property.Name).Name);
                sb.Append(System.Environment.NewLine);
            }
        }
        return sb.ToString();
    }
}

Diese derzeit Ausgänge:

Prop1: System.String Prop1
Prop2: System.String Prop2

Gewünschte Ausgabe:

Prop1: blah1
Prop2: blah2

Ich bin offen für andere Lösungen, es keine Reflexion, es geht nur um die Erstellung der gewünschten Ausgabe.

  • Sie müssen verwenden Sie die GetValue Methode.
  • Sie sollten nicht ToString um alle property-Werte im Allgemeinen. Stattdessen können Sie eine Methode GetPropertyInfo das tut es, wenn Sie wollen.
InformationsquelleAutor bizah | 2012-02-15
Schreibe einen Kommentar