2009-04-08 14 views
-1

Mögliche Duplizieren:
How to get the PropertyInfo of a specific property?Fieldinfo für einzelnes Mitglied

Ich habe eine Klasse in C# mit einem öffentlichen Mitglied. Zum Beispiel:

public class Foo 
{ 
    public int Bar; 
} 

Ich mag würde die Fieldinfo für Bar bekommen, ohne zu tun zu haben:

return this.GetType().GetField("Bar"); 

suche ich nur für einen sauberere, kürzeren Weg, dies zu tun. Etwas wie:

return field(Bar); 

Ich könnte natürlich eine Methode bauen:

public FieldInfo field(string name) 
{ 
    return this.GetType().GetField(name); 
} 

Ich frage mich, wenn C# war für diese Art von Code etwas eingebaut. Etwas, das zur Kompilierzeit überprüft würde, da die obige Methode einen Laufzeitfehler verursacht, wenn ich den Feldnamen falsch schreibe.

+0

Ich nehme an, die Down-Abstimmung ist für Ihr öffentliches Feld. Keine schreckliche Frage. – nawfal

Antwort

0

Nein, was Sie haben, ist so sauber wie es nur geht.

0

Ich bin mir nicht sicher, ob es einen anderen Weg gibt als die Reflexion, die genau diesem Zweck dient.

+0

Ich denke, Morrog war auf der Suche nach einer Art "Compile Time Reflection", die nicht (aber hoffentlich!) In C# verfügbar ist ... – MartinStettner

+0

Yeah, Compile-Time-Reflexion ist wahrscheinlich eine bessere Beschreibung von dem, was ich suche zum. Meine zwei Hauptanliegen bei der Methode, die ich gepostet habe, sind Sicherheit und Leistung, mehr Ersteres als Letzteres. – morrog

0

Ich war auch auf der Suche nach so etwas, weil die Reflexion in verschleiertem Code nicht gut funktionierte. Ich fürchte, es gibt keine bessere Lösung ... (Ich habe schließlich alle Felder mit benutzerdefinierten Attributen versehen und Code durch alle Felder laufen lassen, die nach diesen Attributen suchen, aber das ist noch hässlicher als Ihre Lösung).

Ich hoffe, dass Microsoft erhalten die dieses Problem behoben in C# 4.0 (ich habe für eine in this threadmethodof/propertyof Betreiber einen Vorschlag zu sehen)

1

Sie können es versuchen mit Ausdrücken und Linq. Aber dazu kann ich Ihnen leider keine näheren Angaben machen.

+0

Das wäre viel komplizierter als die OQ-Lösung. – jfar

Verwandte Themen