Im Allgemeinen überschreibe ich die ToString () -Methode, um die Eigenschaftsnamen und die ihnen zugeordneten Werte auszugeben. Ich bin ein bisschen müde davon, diese von Hand zu schreiben, also suche ich nach einer dynamischen Lösung.
Haupt:
%Vor%TestingClass:
%Vor%Dies gibt aktuell aus:
%Vor%Gewünschte Ausgabe:
%Vor%Ich bin offen für andere Lösungen, es muss keine Reflexion verwenden, es muss nur die gewünschte Ausgabe erzeugen.
Das funktioniert für mich:
%Vor% Um es überall verfügbar zu machen, können Sie eine Erweiterung erstellen.
Es ist nicht möglich, Methoden in einer Extension zu überschreiben, aber trotzdem sollte es dein Leben vereinfachen.
Sie können dann ToStringExtension()
für jedes Objekt aufrufen.
Nachteil ist, dass es für Listen etc. nicht perfekt funktioniert, Beispiel:
Hier ist eine Erweiterung, die die Standardtypen wie string, int und Datetime meldet, aber auch String-Listen (unten in AccessPoints
, die die obige Antwort nicht verarbeiten konnte). Beachten Sie, dass die Ausgabe wie folgt ausgerichtet ist:
Unten ist die Erweiterung, die jeden Typ akzeptiert, solange es eine Klasse ist. Es reflektiert dann von den öffentlichen und privaten Eigenschaften und wenn sie nicht null sind, meldet sie.
%Vor% myInstance.ReportAllProperties()
Beachten Sie, dass dies auf meinem Blog-Artikel basiert C #: ToString, um alle Eigenschaften auch Private über Reflektion zu melden , die eine bereitstellt robustere Erklärung dessen, was vor sich geht.
Tags und Links c# reflection override tostring