Wie bekomme ich den Namen der Eigenschaft aus dem Getter / Setter dieser Eigenschaft? [Duplikat]

8

Nehmen wir an, wir haben eine Eigenschaft wie folgt

%Vor%

Wie kann ich den Wert der obigen Variablen propName als Eigenschaftsnamen festlegen, indem ich die Assembly-Informationen selbst lese?

Bearbeiten

Warum brauchen wir das?

Ich verwende den WPF d:DataContext wie in hier , die mir helfen, einen 'Design-Modus' Wert für gebundene Eigenschaften anzuzeigen - sehr oft werden die gebundenen Werte als leere Zeichenfolge im Design angezeigt Modus. Und in der Datenkontextklasse 'Entwurfsmodus' möchte ich den Eigenschaftsnamen für jede mögliche Bindungseigenschaft zurückgeben.

Ich hoffe, dies würde Ihre Bedenken erklären.

    
Nam G VU 06.12.2010, 09:27
quelle

4 Antworten

10

Nach einiger Zeit finde ich eine Lösung wie unten, die für mich sehr praktisch ist.

%Vor%

Von jetzt an ist es viel einfacher für uns, die Bindungseigenschaften mocking value im Design-Modus anzuzeigen.

Ich hoffe, Sie würden es eines Tages hilfreich finden!

    
Nam G VU 10.12.2010, 04:20
quelle
4

Es gibt keine zuverlässige Möglichkeit, dies zur Laufzeit zu tun, aber Sie können MethodBase.GetCurrentMethod().Name und wirf die ersten vier Charaktere weg.

Dieser Ansatz weist einige Fehler auf: Das Ausführen der Binärdatei durch ein Verschleierungstool kann dazu führen, dass die Methode umbenannt wird. Darüber hinaus kann die Methode inline sein und Probleme verursachen (wenn Sie Remove nur für die Zeichenfolge verwenden, ohne die Länge zu überprüfen, kann dies sogar zu unerwarteten Abstürzen im Build von Release führen, die im Debug-Modus möglicherweise schwer zu reproduzieren sind).

>

Wenn Ihr Code einem Muster folgt und Sie eine Reihe von Eigenschaften wie diese erzeugen müssen, ist es besser, einen Kompilierungszeitansatz wie einen Code-Generator oder ein Aspekt-orientiertes Programmier-Framework zu verwenden.

    
Mehrdad Afshari 06.12.2010 09:30
quelle
1

Dies sollte auch funktionieren, aber ich bin mir nicht sicher, warum Sie dies benötigen

%Vor%     
TalentTuner 06.12.2010 09:38
quelle
-3

Es ist möglich, den Namen der Eigenschaft an den Getter zu übergeben.

Wenn MyObj das Objekt ist und PropName die Variable ist, die den Namen der Eigenschaft enthält, führt der folgende Code die Aufgabe aus:

%Vor%     
Zargul 12.04.2013 12:48
quelle

Tags und Links