Si consideri il seguente codice:Posso ottenere metadati specifici da un Func <T, object>?
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"
Ecco il metodo di estensione:
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
}
C'è un modo per fare questo? Ho pensato che forse questo altro metodo, usando Expression<Func<T, object>>
invece di Func<T, object>
, mi avrebbe dato più potere di trovare quello di cui avevo bisogno, ma non so come.
public static string GetPropertyName<T>(this IList<T> list, Expression<Func<T, object>> expr) {
// interrogate expr to get what I want, if possible
}
Questa è la prima volta che faccio qualcosa di così profondo con Linq, quindi forse mi manca qualcosa di ovvio. Fondamentalmente mi piace l'idea di passare in lambda, in modo da ottenere un controllo in fase di compilazione, ma non so che la mia idea su come posso usarli in questo caso particolare funzionerà.
Grazie
possibile duplicato di [Ottieni nome e tipo di metodo utilizzando espressione lambda] (http://stackoverflow.com/questions/273941/get-method-name-and-type-using-lambda-expression) – nawfal