2009-08-07 23 views
0

Ich implementiere selbst einen Verfolgungs-Mechanismus. Nun, was ich gerne wissen würde, ist der beste Weg, um diesen Mechanismus (ich meine die Architektur) zu implementieren. Zuerst dachte ich an eine Klasse wie folgt zu schaffen:So implementieren Sie die Ablaufverfolgung in .net

class Tracer { 
    public void NewEventRegistered(etc) {...} //this is the method I use to send this class the events I want to register 

    event newEventRegistered(..) //this is the event the user is going to use to catch all the events in the application that have been sent to NewEventRegistered method. 
} 

Aber dann sah ich, gibt es eine Tracelistener-Klasse, die mich lassen Sie uns schreiben und Console.WriteLine Methoden implementieren. Der große Nachteil ist, dass beide Methoden nur Strings als Argumente zulassen, und ich würde in der Lage sein, viel mehr Informationen als Strings zu senden. Was soll ich machen? Vielleicht ist mein erster Idea der Beste?

edit: Ich weiß, es gibt eine Menge von Tracing-Mechanismen wie PostSharp und so, ich mache das nur für Lernzwecke!

Antwort

2

Die Write- und WriteLine-Funktionen, die Zeichenfolgen akzeptieren, stellen nur das Minimum an Funktionen dar, die Sie überschreiben müssen. Es gibt andere Schreibfunktionen in TraceListener, die Sie optional überschreiben können, die Objekte akzeptieren.

TraceListener ist jedoch für die Verwendung mit den Framework-Tracing-Funktionen konzipiert. Wenn Sie die Klasse nicht zum "Zuhören" verwenden, um die Ausgabe zu verfolgen, die das Framework durchläuft, sind Sie möglicherweise besser mit einer Schnittstelle ausgestattet, die Ihren speziellen Tracing-Anforderungen besser entspricht.

Vielleicht wäre die Vererbung von System.IO.TextWriter für Ihren Fall besser. Es hat viele Schreibmethoden, aber ich glaube, dass sie ihre gesamte Ausgabe über Write und WriteLine weiterleiten. Wenn Sie also diese beiden Funktionen einfach überschreiben, erhalten Sie viel kostenlos.

Verwandte Themen