Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

Custom Attributes: Zugriff auf Instanz einer Klasse auf die es angewendet wurde
ltrader
myCSharp.de - Member



Dabei seit:
Beiträge: 60
Herkunft: Mannheim

Themenstarter:

Custom Attributes: Zugriff auf Instanz einer Klasse auf die es angewendet wurde

beantworten | zitieren | melden

Hallo,

Wenn ich ein CustomAttrbute schreibe und dieses auf eine Klasse oder Methode anwende kann ich wunderbar per Reflection die MemberInfos auslesen, auf die das Attribut angewendet wurde.

Besteht auch die Möglichkeit vom Code des Attributes aus Zugriff auf das MemberInfo Objekt zu bekommen, auf das eine Instanz des Attributes angewendet wurde? Wenn ja wie stelle ich das an?

Viele Grüße
ltrader
Real programers do not comment their code.
It is hard to write and it should be hard to understand!
private Nachricht | Beiträge des Benutzers
winSharp93
myCSharp.de - Experte

Avatar #avatar-2918.png


Dabei seit:
Beiträge: 6155
Herkunft: Stuttgart

beantworten | zitieren | melden

Hallo ltrader,
Zitat von ltrader
Wenn ja wie stelle ich das an?
da wirst du IMHO wohl oder übel alle Member aller Klassen durchgehen müssen (lässt sich zumindest wunderbar parallelisieren).

Eventuell musst du das aber nicht auf dem PC des Users machen, sondern kannst das vorher einmal daraus eine XML-Datei generieren und diese dann einlesen.
private Nachricht | Beiträge des Benutzers
ltrader
myCSharp.de - Member



Dabei seit:
Beiträge: 60
Herkunft: Mannheim

Themenstarter:

beantworten | zitieren | melden

Ich fürchte damit ist mir nicht geholfen - vielleicht habe ich mich auch nicht optimal ausgedrückt.

Was ich benötige ist eine Möglichkeit innerhalb der Instanz des Attributes eine Referenz auf das entsprechende Objekt oder MemberInfo Objekt zu ergattern.

Intention ist es innerhalb des Attributes mitzubekommen wenn die entsprechende Methode auf die as Attribut angewendet wird aufgerufen wird. So könnte ich deklatativ
1. ein Logging betreiben
2. Informationen auswerten, die den Aufruf der Methode betreffen.

Eine Alternative könnte sein, eine Art Listener an das entsprechende MethodInfo Objekt zu hängen, aber wie und ob das geht weiss ich nicht..

Grüße
Real programers do not comment their code.
It is hard to write and it should be hard to understand!
private Nachricht | Beiträge des Benutzers
winSharp93
myCSharp.de - Experte

Avatar #avatar-2918.png


Dabei seit:
Beiträge: 6155
Herkunft: Stuttgart

beantworten | zitieren | melden

Das geht nicht so ohne Weiteres.

Dazu braucht man ein Framwork (genauer gesagt einen Rewriter) zur Aspektorientierten Programmierung (AOP).

Suche mal nach "PostSharp" bzw. siehe [Artikel] Attribute zur Prüfung von Properties verwenden
Dieser Beitrag wurde 2 mal editiert, zum letzten Mal von winSharp93 am .
private Nachricht | Beiträge des Benutzers
herbivore
myCSharp.de - Experte

Avatar #avatar-2627.gif


Dabei seit:
Beiträge: 52329
Herkunft: Berlin

beantworten | zitieren | melden

Hallo ltrader,
Zitat
Was ich benötige ist eine Möglichkeit innerhalb der Instanz des Attributes eine Referenz auf das entsprechende Objekt oder MemberInfo Objekt zu ergattern.
das geht aber standardmäßig leider nicht. Genauso wenig wie es einen standardmäßigen (direkten) Weg gibt, innerhalb der Codes einer Property oder einer Methode an deren Attribute zu kommen. Sprich das Hin- und Her zwischen Attributen und dem attributierten Member wird vom Framework nicht wirklich unterstützt.

Natürlich kann man sich selber was basteln, aber das ist dann eben auch gebastelt.

herbivore
private Nachricht | Beiträge des Benutzers