Kann ich bestimmte Metadaten von einem Funct-Objekt erhalten?

7

Betrachten Sie den folgenden Code:

%Vor%

Hier ist die Erweiterungsmethode:

%Vor%

Gibt es eine Möglichkeit, dies zu tun? Ich dachte, dass diese andere Methode, die Expression<Func<T, object>> anstatt Func<T, object> verwendet, mir mehr Macht geben würde, um das zu finden, was ich brauche, aber ich weiß nicht, wie.

%Vor%

Dies ist das erste Mal, dass ich etwas so tief mit Linq gemacht habe, also vermisse ich vielleicht etwas Offensichtliches. Grundsätzlich mag ich die Idee, Lambdas einzubringen, damit ich die Kompilierzeit überprüfen kann, aber ich weiß nicht, dass meine Idee, wie ich sie in diesem speziellen Fall verwenden kann, funktionieren wird.

Danke

    
Jason Bunting 24.02.2009, 00:15
quelle

4 Antworten

12

Dies ist die Version, die ich benutze, es gibt PropertyInfo zurück, aber den Namen zu bekommen ist trivial.

%Vor%     
gcores 24.02.2009, 00:21
quelle
6

Hier ist eine sehr einfache und schnelle Möglichkeit, es in diesem Blog zu tun: Ссылка

  

So gegeben:

     

Func func = Name = & gt;   "Wert";

     

Sie können den Lambda-Parameter erhalten   "Name" vom Funktionsdelegaten nach   anrufend:

     

func.Method.GetParameters () [0] .Name   (würde "Name" zurückgeben)

     

Hier ist die überarbeitete Hash-Methode von   Andrey:

%Vor%

Hoffe es hilft, Patrick

    
Patrick Wolf 08.05.2009 17:36
quelle
3

So etwas sollte den Trick machen:

%Vor%

WARNUNG: Luftcode!

    
Nathan W 24.02.2009 00:20
quelle
2

Nur eine Randnotiz: func.Method.GetParameters () [0] .Name ist extrem schnell im Vergleich zum Kompilieren des Lambda und Extrahieren des Member-Ausdrucks, dann der Member-Info und dann des Namens .

    
Dave 25.05.2009 18:54
quelle

Tags und Links