Betrachten Sie den folgenden Code ein:Kann ich spezifische Metadaten von einem Func <T, object> erhalten?
string propertyName;
var dateList = new List<DateTime>() { DateTime.Now };
propertyName = dateList.GetPropertyName(dateTimeObject => dateTimeObject.Hour);
// I want the propertyName variable to now contain the string "Hour"
Hier ist die Extension-Methode:
public static string GetPropertyName<T>(this IList<T> list, Func<T, object> func) {
//TODO: would like to dynamically determine which
// property is being used in the func function/lambda
}
Gibt es eine Möglichkeit, dies zu tun? Ich dachte, dass vielleicht diese andere Methode, mit Expression<Func<T, object>>
statt Func<T, object>
würde mir mehr Kraft zu finden, was ich brauche, aber ich bin ratlos, wie.
public static string GetPropertyName<T>(this IList<T> list, Expression<Func<T, object>> expr) {
// interrogate expr to get what I want, if possible
}
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 zu übergeben, so dass ich die Kompilierzeit überprüfe, aber ich weiß nicht, dass meine Idee, wie ich sie in diesem speziellen Fall verwenden kann, funktionieren wird.
Dank
möglich Duplikat von [Get Method Name und Typ mit Lambda-Ausdruck] (http://stackoverflow.com/questions/273941/get-method-name-and-type-using-lambda-ausdruck) – nawfal