Wählen Sie eine Modelleigenschaft mit einem Lambda-Namen und nicht mit einem String-Eigenschaftsnamen aus

8

Ich erstelle eine Liste von Eigenschaften eines Typs, die in einen Export einer Sammlung dieses Typs aufgenommen werden sollen. Ich möchte dies tun, ohne Zeichenfolgen für Eigenschaftsnamen zu verwenden. Nur bestimmte Eigenschaften des Typs sollen in die Liste aufgenommen werden. Ich möchte etwas tun wie:

%Vor%

Wie kann ich diese generische Add-Methode implementieren? Übrigens ist die Zeichenfolge die Beschreibung der Eigenschaft.

    
ProfK 24.08.2010, 17:02
quelle

2 Antworten

9

Sie können das PropertyInfo-Objekt abrufen, indem Sie den übergebenen Ausdruck prüfen. Etwas wie:

%Vor%

Dies ist eine unvollständige Implementierung, weil ich nicht weiß, was genau Sie mit der Eigenschaft machen wollen - aber es zeigt, wie man PropertyInfo von einem Ausdruck bekommt - das PropertyInfo-Objekt enthält alle Metadaten über die Eigenschaft. Stellen Sie außerdem sicher, dass die Fehlerbehandlung zu den oben genannten hinzugefügt wird, bevor Sie sie im Produktionscode anwenden (dh, schützt vor dem Ausdruck, der kein MemberExpression ist, usw.).

    
driis 24.08.2010, 17:09
quelle
0

Eine übergeordnete Auswahlkonfiguration sieht so aus:

%Vor%

Dies verhindert, dass der übergebene Ausdruck eine UnaryExpression ist, die Convert(x => x.ValueTypeProperty) enthält, wenn Ihr Selektor auf einen Werttyp abzielt.

Siehe die zugehörige Frage zu UnaryExpression im Vergleich zu MemberExpression auf SO hier .

    
Tetsujin no Oni 21.07.2014 21:27
quelle

Tags und Links