| 

.NET C# Java Javascript Exception

0
Hallo zusammen,

ich habe in meinem ASP.NET-Web eine CustomAttribute-Klasse namens "ActivityAttribute" definiert, mit der eine Art Logging stattfinden soll. Ausgesuchte Methoden (Anmeldung, Abmeldung et cetera) sollen damit versehen werden, um die Ausführung neuralgischer Punkte in einer Historie festzuhalten. Im Konstruktor der Klasse wird der übergebene Textwert 'ActivityText" mit Datum und Uhrzeit in einer DB geschrieben. So weit so gut.

Ich möchte nun bei bestimmten Methoden-Attributen neben dem Text noch weitere Infos mitschicken, wie zum Beispiel den Benutzer, der sich gerade versucht anzumelden, aber ich habe in der Attribut-Deklaration keinen Zugriff auf die lokalen Variablen der Methode oder der Page. Also quasi:

<Activity("Anmeldung", strUserName)> _
Private Function AuthenticateUser(strUserName...

oder

<Activity("Anmeldung", Me.txtUsername)> _
Protected Sub OnAuthenticate...

Mir ist, glaube ich, nicht ganz klar, in welchem Kontext eine Instanz der Attribut-Klasse erstellt wird.

Für eine Idee oder Klarstellung wäre ich dankbar...

Gruss
Kristof
22.09.2009
Kiko 531 1 2
Wenn du eine Frage stellst, solltest du Tags mit angeben. Auf dieser Webseite gibt es keine andere möglichkeit, Fragen irgendwie zu ordnen.
clonejo 27.09.2009
2 Antworten
0
Hallo Kiko,

Attribute stellen erweiterte Informationen für "Elemente" von .net dar. Sie werden zur Laufzeit ausgewertet (via Reflektion). Die "Elemente" sind dabei: Assemblies, Klassen, Methoden, ...

Da Attribute Metadaten darstellen sollten sie auch nicht zur Laufzeit geändert werden. Alternative Lösungswege wären besser.

Aber:
Attribute sind intern nichts anderes als Klassen welche diese Informatione für das Element bereitstellen. Somit ist es mittels Reflektion möglich - aber aufwändig - die Eigenschaft zu ändern.

Für das Logging würde ich einen "klassischen" Ansatz wählen. Auch mit Attributen muss irgendwo der Anstoss zum Loggen erfolgen (Methodenaufruf) und deshalb kann dort gleich die beötigten Argumente übergeben werden.
22.09.2009
gfoidl 9,1k 3 5
0
Danke für Deine Antwort. Ja, Du hast schon recht, allerdings stehe ich auf den AOP-Ansatz...

Mir ist inzwischen bewußt, dass ich mit reinen Attributen nicht weiterkomme. PostSharp wäre zwar eine Alternative, aber mein Projekt ist ein Website, d.h. On-Demand-Kompilierung widerspricht m.E. diesem Ansatz ein wenig und wäre auch nicht performant.

Ich gehe jetzt den klassischen Weg, obwohl ich eigentlich weg will von dem ganzen Infrastrukturcode-Gemenge.

Gruss
Kristof
22.09.2009
Kiko 531 1 2
1
Ich werde ja nicht müde, die Leute darauf hinzuweisen, dass dies keine Forensoftware ist - die Reihenfolge der Beiträge bleibt also nicht unbedingt erhalten. Wenn es also etwas zu kommentieren gibt, dann nutzt doch bitte die Kommentarfunktion und postet keine eigene Antwort!
balu 23.09.2009

Stelle deine Logging-Frage jetzt!