Ablaufzeit der Ablaufverfolgung

8

Ich versuche, benutzerdefinierte Tracing-Methoden in meine Anwendung zu "injizieren".

Ich möchte es so elegant wie möglich gestalten, ohne viel vom bestehenden Code zu ändern, und habe die Möglichkeit, es einfach zu aktivieren / deaktivieren.

Eine Lösung, die ich mir vorstellen könnte, wäre, eine benutzerdefinierte Attribute zu erstellen, die ich an die Methoden anschließe, die ich verfolgen möchte.

Grundidee:

%Vor%

Gibt es irgendwelche .NET -Attribute, die Rückrufe bereitstellen, wenn eine Methode aufgerufen / beendet wird?

    
Catalin 28.05.2015, 07:21
quelle

2 Antworten

4

Die Methode des Attributs wird nur aufgerufen, wenn Sie sie manuell aufrufen. Es gibt Sicherheitsattribute, die von der CLR aufgerufen werden, aber das geht über das Thema dieser Frage hinaus und wird sowieso nicht nützlich sein.

Es gibt Techniken, um Ihren Code auf verschiedenen Ebenen neu zu schreiben. Quellcode Weben, IL Weben etc.

Sie müssen eine Möglichkeit suchen, um die IL zu ändern und sie neu zu schreiben, um die Ausführung zu planen. Mach dir keine Sorgen, du musst nicht alles schreiben. Die Leute haben es schon getan. Zum Beispiel können Sie PostSharp verwenden.

Hier ist ein Artikel , der ein Beispiel liefert

> %Vor%

Hinweis: Ich habe das Beispiel aus dem Artikel so geändert, dass StopWatch anstelle von DateTime verwendet wird, weil DateTime nicht korrekt ist.

    
Sriram Sakthivel 28.05.2015, 07:39
quelle
1

Sie können die Ausführungszeit von Methoden einfach mit PostSharp verfolgen (verfügbar als NuGet-Paket). Code des benutzerdefinierten Attributs auf Methodenebene, das genau das tut (aus hier ):

%Vor%     
cyberj0g 28.05.2015 07:40
quelle

Tags und Links