Consultez le code suivant:Puis-je obtenir des métadonnées spécifiques à partir d'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"
Voici la méthode d'extension:
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
}
Est-il possible de le faire? Je pensais que peut-être cette autre méthode, en utilisant Expression<Func<T, object>>
au lieu de Func<T, object>
me donnerait plus de pouvoir pour trouver ce dont j'ai besoin, mais je suis à une perte de comment.
public static string GetPropertyName<T>(this IList<T> list, Expression<Func<T, object>> expr) {
// interrogate expr to get what I want, if possible
}
C'est la première fois que j'ai fait quelque chose aussi profond avec Linq, alors peut-être qu'il me manque quelque chose d'évident. Fondamentalement, j'aime l'idée de passer en lambdas, de sorte que je vérifie à la compilation, mais je ne sais pas si mon idée sur la façon dont je peux les utiliser dans ce cas particulier fonctionnera.
Merci
duplication possible de [Obtenir le nom et le type de la méthode en utilisant l'expression lambda] (http://stackoverflow.com/questions/273941/get-method-name-and-type-using-lambda-expression) – nawfal