L'utilisateur de StackOverflow jolson avait un très bon morceau de code qui illustre comment on peut enregistrer des menthods sans utiliser de chaînes, mais des arbres d'expressions here.Récupère le nom d'une propriété en la passant à une méthode
Est-il possible d'avoir quelque chose de similaire pour les propriétés au lieu des méthodes? Passer une propriété (pas le nom de la propriété) et à l'intérieur de la méthode pour obtenir le nom de la propriété?
Quelque chose comme ceci:
RegisterMethod(p => p.Name)
void RegisterMethod(Expression??? propertyExpression) where T : Property ???
{
string propName = propertyExpression.Name;
}
Merci.
Pourquoi le TProp est-il nécessaire? J'ai testé et ça marche, mais je réalise que j'ai besoin d'apprendre des arbres d'expression. –
@Vasi - le type de lambda doit être explicite. Vous ne pouvez pas, par exemple, simplement utiliser 'Expression'. Le TProp se réfère ici à l'int qui décrit la propriété. Vous pouvez laisser le compilateur le comprendre, cependant. –
TProp exprime le type de retour de la propriété, et est nécessaire pour décrire une méthode qui prend quelque chose, et renvoie quelque chose d'autre, à savoir: le Func. Ensuite, l'arborescence d'expression est construite sur ce type de délégué. –