Attributklassen - Besitzer herausfinden

25/03/2008 - 10:21 von Holger | Report spam
Hallo NG,

ich habe folgendes Problem:
Ich würde gern jeder Property einer Klasse ein Attribut mitgeben, in
dem der Default-Name des Attributs steht (der Display-Name). In der
Attributklasse habe ich nun ein Hashtable, in der ich mir das merke.
Da die Informationen in der Hashtable static sind, möchte ich jetzt
noch die Quelle mit speichern. Ich will aber nicht in den
Attributparametern System.Reflection.PropertyInfo oder so etwas
mitgeben - am schönsten wàre es, wenn ich in der Attributklasse
herausfinden könnte, wem das Attribut gehört.

Wahrscheinlich Schwachsinn - aber gibts da so ein verstecktes Feature?

Grüße
Holger
 

Lesen sie die antworten

#1 Elmar Boye
25/03/2008 - 11:39 | Warnen spam
Hallo Holger,

Holger schrieb:
Ich würde gern jeder Property einer Klasse ein Attribut mitgeben, in
dem der Default-Name des Attributs steht (der Display-Name). In der
Attributklasse habe ich nun ein Hashtable, in der ich mir das merke.
Da die Informationen in der Hashtable static sind, möchte ich jetzt
noch die Quelle mit speichern. Ich will aber nicht in den
Attributparametern System.Reflection.PropertyInfo oder so etwas
mitgeben - am schönsten wàre es, wenn ich in der Attributklasse
herausfinden könnte, wem das Attribut gehört.



Diese Zuordnung gibt es nicht - und ist normalerweise auch nicht sinnvoll.
Ein System.Attribute kann nur der Verwendungszweck (Target) zugeordnet werden.
Von wem es im Einzelfall verwendet wird, "weiß" das Attribut nicht.
In Deinem Falle wàre eine Lösung
TypeDescriptor.GetAttributes(..., new Attribute[] { DeinAttribut });
was Dir eine gefilterte Liste der Eigenschaften mit dem Attribut liefert.
Da im übrigen TypeDescriptor selbst einen Cache vorhàlt, ist Deine
zusàtzliche Hashtable nicht unbedingt notwendig - und wenn sollte
sie threadsicher und ggf. die aktuelle CultureInfo berücksichtigen.

Gruß Elmar

Ähnliche fragen