Динамическое переопределение ToString () с использованием Reflection

Я обычно переопределяю метод ToString () для вывода имен свойств и связанных с ними значений. Я немного устал писать их от руки, поэтому ищу динамическое решение.

Основной:

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();
    }
}

В настоящее время это выводит:

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

Желаемый результат:

Prop1: blah1
Prop2: blah2

Я открыт для других решений, он не должен использовать отражение, он просто должен произвести желаемый результат. вывод.

10
задан bizah 15 February 2012 в 18:40
поделиться